0

うまくいけば、誰かが私を正しい方向に向けることができます。リストビューの画像、ID、テキストに3つのアイテムを表示するカスタムアダプターを作成しています。

だから私は正常に動作するJSONオブジェクトを返すWebサービスからデータを取得します。私の問題は、リストにデータがないため、Asynctaskの後にどこが間違っているのかわかりません。単一のフィールドをスピナーに渡すときにすでにこれを実装していますが、それを理解できません。新しい CallOut オブジェクトを手動で割り当てて Arraylist に追加すると、カスタム アダプターが機能することがわかっています。

public class ListCallOuts extends Activity {



ArrayList<CallOut> callOutResults=new ArrayList<CallOut>(); //=GetCallOuts();
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview);
    GetCallOuts();

    //ArrayList<CallOut> searchResults = GetSearchResults();





    final ListView lv1 = (ListView) findViewById(R.id.listView1);
    lv1.setAdapter(new CallOutAdapter(this,callOutResults));
    //lv1.setAdapter(new CallOutAdapter(this, searchResults));

    lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> a, View v, int position, long id) {
            Object o = lv1.getItemAtPosition(position);
            CallOut fullObject = (CallOut)o;
            Toast.makeText(ListCallOuts.this, "You have chosen: " + " " +   
           fullObject.getName(), Toast.LENGTH_LONG).show();
        }
    });
}

private void GetCallOuts() {

    new DownloadCallouts().execute(new String[]  
{"http://192.168.0.16:8080/return_callouts.json"});



}


private class DownloadCallouts extends AsyncTask<String,Void,JSONArray> {
    @Override
    protected JSONArray doInBackground(String... urls) {

        JSONArray array = null;
        for (String url : urls) {
            DefaultHttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(url);
            try {
                HttpResponse execute = client.execute(httpGet);
                HttpEntity entity = execute.getEntity();
                String data = EntityUtils.toString(entity);
                array = new JSONArray(data);


            } catch (JSONException e) {
                e.printStackTrace(); 
            } catch (ClientProtocolException e) {
                e.printStackTrace();  
            } catch (IOException e) {
                e.printStackTrace();  
            }
        }
        return array;
    }

    @Override
    protected void onPostExecute(JSONArray jsonArray) {
        for(int i=0;i<jsonArray.length();i++){

            try {
                JSONObject row = jsonArray.getJSONObject(i);
                CallOut callOut = new    
  CallOut(row.getString("id"),row.getString("customer_name")) ;
                callOutResults.add(callOut);
            } catch (JSONException e) {
                e.printStackTrace();  
            }


        }
    }
}
}
4

1 に答える 1