Вопрос по android – Как загрузить данные в Custom Listview из массива JSON

2

Я загрузил данные в обычное представление списка из массива JSON, как это

 JSONArray jArray = new JSONArray(result);       
 final String[] array_spinner = new String[jArray.length()];
 for(int i=0;i<jArray.length();i++){
     JSONObject json_data = jArray.getJSONObject(i);
     String jj=json_data.getString("f_name");
     array_spinner[i] = jj;
 }
 ArrayAdapter<String> adapter = new ArrayAdapter<String> (this,  android.R.layout.simple_list_item_1,array_spinner); adapter.setDropDownViewResource(android.R.layout.simple_list_item_1);
 //adapter.setDropDownViewResource(R.layout.spinner_layout);
 list.setAdapter(adapter);

Я хочу загрузить данные в пользовательский список. мой XML-файл для пользовательского списка это receiver.xml

Как я могу загрузить данные в пользовательский список из JSON?

Ваш Ответ

1   ответ
7
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

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

Заполнить ListView из JSON

для вас я смешал оба, чтобы вы поняли ...

XML деятельности

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    >
<ListView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/lstText"
    />
</LinearLayout>

XML списка строк (в макете row.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent">

        <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/txtAlertText" />

    </LinearLayout>
</LinearLayout>

вы адаптер класса

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;
    }
}

ваша деятельность

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 );


}
Но это дает ошибки, вы можете редактировать мой код, как я хотел в вопросе? Lahiru Chathuranga
Я думаю, что второй прост ... не ......?
какая ошибка? Вы должны изменить этот код в соответствии с вашими потребностями ....
Я не понимаю, у тебя есть простой пример? Lahiru Chathuranga
jSONAdapter = новый JSONAdapter (main.this, R.layout.listitems, & lt; you JSON array & gt;); здесь задает 3 параметра, но в конструкторе класса JSONADapter имеет 2 параметра: private VenuesAdapter (Activity Activity, JSONArray jsonArray) { Lahiru Chathuranga

Похожие вопросы