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 からカスタム リストビューにデータをロードするにはどうすればよいですか?

4

1 に答える 1

7
  • BaseAdpter または ArrayAdpter を拡張するカスタム アダプターを作成し、コンストラクターで配列または ArrayList を渡します。
  • (行の) レイアウトでビューを作成する
  • カスタム アダプタの getView 関数でこの xml をインフレートし、データを設定します。

のように

http://www.josecgomez.com/2010/05/03/android-putting-custom-objects-in-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 );


}
于 2012-06-04T10:12:34.827 に答える