0

このウェブサイト hereからのデータを正常に解析しました。いくつかのコードを記述した後、ListView に表示したい文字列を取得します。基本的に、Web サイトの配列全体を ListView に表示したいと考えています。

DefaultHttpClient   httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost("http://ec2-54-213-155-95.us-west-2.compute.amazonaws.com/notices.php");
// Depends on your web service
httppost.setHeader("Content-type", "application/json");

    InputStream inputStream = null;
    String result = null;
    try {
        HttpResponse response = httpclient.execute(httppost);           
        HttpEntity entity = response.getEntity();

        inputStream = entity.getContent();
        // json is UTF-8 by default
        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
        StringBuilder sb = new StringBuilder();

        String line = null;
        while ((line = reader.readLine()) != null)
        {
            sb.append(line + "\n");
        }
        result = sb.toString();
    } catch (Exception e) { 
        // Oops
    }
    finally {
        try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
    }

    try {
        JSONObject jObject = new JSONObject(result);
        JSONArray jsonArray = jObject.getJSONArray("notices");        
        for(int i = 0; i < jsonArray.length(); i++) {
            String arrayString = jsonArray.getString(i);
            Log.d("notices", arrayString); 
            ListView listView1 = (ListView) findViewById(R.id.listView1);


    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

arrayAdapter の使用を考えていますが、使用方法がわかりません。

4

5 に答える 5

4

ListView にデータを表示する前に、データを ArrayList とデータベースのどちらに格納するかを最初に決定します。ArrayList から ListView には ArrayAdapter が必要で、データベースから ListView には CursorAdapter が必要です。ArrayList では、TextView しかない場合は単純な ArrayAdapter を使用できますが、複数の TextView または複数のコンポーネントがある場合はカスタム ArrayAdapter を使用できます。

于 2013-09-04T03:52:49.827 に答える
0

Try to add the data using ArrayList<String> and StableArrayAdapter as below:

    ListView listView1 = (ListView) findViewById(R.id.listView1); 
     JSONObject jObject = new JSONObject(result);
    JSONArray jsonArray = jObject.getJSONArray("notices");   
     final ArrayList<String> list = new ArrayList<String>();
     for (int i = 0; i < jsonArray.length; ++i) 
       {
           String arrayString = jsonArray.getString(i);
            Log.d("notices", arrayString); 
           list.add(arrayString);
     }
    final StableArrayAdapter adapter = new StableArrayAdapter(this,
    android.R.layout.simple_list_item_1, list);
    listview1.setAdapter(adapter);

StableArrayAdapter class

   private class StableArrayAdapter extends ArrayAdapter<String> {
         HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();
   public StableArrayAdapter(Context context, int textViewResourceId,
           List<String> objects) {
         super(context, textViewResourceId, objects);
        for (int i = 0; i < objects.size(); ++i) {
          mIdMap.put(objects.get(i), i);
     }
  }
@Override
public long getItemId(int position) {
  String item = getItem(position);
  return mIdMap.get(item);
}
@Override
public boolean hasStableIds() {
  return true;
}

}

于 2013-09-04T04:29:58.067 に答える
0

次のように SimpleArrayAdapter を使用できます:-

ArrayList<String> list = new ArrayList<String>();
for(int i = 0; i < jsonArray.length(); i++) {
            String arrayString = jsonArray.getString(i);
            Log.d("notices", arrayString); 
          list .add(arrayString);


    }


// and after filling this array list you can set this adapter to you list as 
ListView listView1 = (ListView) findViewById(R.id.listView1);
 final StableArrayAdapter adapter = new StableArrayAdapter(this,
        android.R.layout.simple_list_item_1, list);
    listView1 .setAdapter(adapter)
于 2013-09-04T04:24:23.577 に答える