How to load data to Custom Listview from JSON array

后端 未结 1 1994
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-15 12:56

I have loaded data to normal list view from JSON array like this

 JSONArray jArray = new JSONArray(result);       
 final String[] array_spinner = new String         


        
1条回答
  •  自闭症患者
    2021-01-15 13:06

    • Create a custom Adapter extending BaseAdpter or ArrayAdpter and pass array or ArrayList in the constructor
    • Create the View in a layout (of row)
    • Inflate this xml in getView function of the custom Adapter and set the data

    as in

    http://www.josecgomez.com/2010/05/03/android-putting-custom-objects-in-listview/

    Populate Listview from JSON

    for you i mixed both to make you understand...

    Activity XML

    
    
    
    
    

    list row XML (in layout row.xml)

    
    
        
    
            
    
        
    
    

    you adapter class

    class JSONAdapter extends BaseAdapter implements ListAdapter {
    
        private final Activity activity;
        private final JSONArray jsonArray;
        private JSONAdapter (Activity activity, JSONArray jsonArray) {
            assert activity != null;
            assert jsonArray != null;
    
            this.jsonArray = jsonArray;
            this.activity = activity;
        }
    
    
        @Override public int getCount() {
            if(null==jsonArray) 
             return 0;
            else
            return jsonArray.length();
        }
    
        @Override public JSONObject getItem(int position) {
             if(null==jsonArray) return null;
             else
               return jsonArray.optJSONObject(position);
        }
    
        @Override public long getItemId(int position) {
            JSONObject jsonObject = getItem(position);
    
            return jsonObject.optLong("id");
        }
    
        @Override public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null)
                convertView = activity.getLayoutInflater().inflate(R.layout.row, null);
    
    
    
            TextView text =(TextView)convertView.findViewById(R.id.txtAlertText);
    
                        JSONObject json_data = getItem(position);  
                        if(null!=json_data ){
                        String jj=json_data.getString("f_name");
                        text.setText(jj); 
                       }
    
             return convertView;
        }
    }
    

    your activty

    public class main extends Activity {
        /** Called when the activity is first created. */
    
        ListView lstTest;
        //Array Adapter that will hold our ArrayList and display the items on the ListView
        JSONAdapter jSONAdapter ;
    
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            //Initialize ListView
            lstTest= (ListView)findViewById(R.id.lstText);
    
    
            jSONAdapter = new JSONAdapter (main.this,jArray);//jArray is your json array 
    
            //Set the above adapter as the adapter of choice for our list
            lstTest.setAdapter(jSONAdapter );
    
    
    }
    

    0 讨论(0)
提交回复
热议问题