如何为ListView创建自定义ArrayAdapter

如何为ListView创建自定义ArrayAdapter

问题描述:

我必须从我得到的JSON响应中自定义ArrayAdapter。这是从那里我得到响应,并把它在简单ArrayAdapterandroid.R.layout.simple_list_item_1如何为ListView创建自定义ArrayAdapter

ListView lv = (ListView) findViewById(R.id.list); 

    try { 

     HttpClient hClient = new DefaultHttpClient(); 
     HttpGet hGet = new HttpGet(
       "API HERE"); 
     ResponseHandler<String> rHandler = new BasicResponseHandler(); 
     data = hClient.execute(hGet, rHandler); 

     JSONObject rootObj = new JSONObject(data); 
     JSONObject searchObj = rootObj.getJSONObject("searchdata"); 
     JSONArray titlesObj = searchObj.getJSONArray("titles"); 
     JSONArray descsObj = searchObj.getJSONArray("desc"); 
     JSONArray linksObj = searchObj.getJSONArray("links"); 

     String[] a = new String[titlesObj.length()]; 

     String[] b = new String[descsObj.length()]; 

     String[] c = new String[linksObj.length()]; 

     for (int i = 0; i < titlesObj.length(); i++) { 
      String title = titlesObj.getString(i); 
      a[i] = title; 
     } 

     for (int i = 0; i < descsObj.length(); i++) { 
      String desc = descsObj.getString(i); 
      b[i] = desc; 
     } 

     for (int i = 0; i < linksObj.length(); i++) { 
      String link = linksObj.getString(i); 
      c[i] = link; 
     } 

     ArrayList<String> al = new ArrayList<String>(); 
     for (int i = 0; i < linksObj.length(); i++) 

     { 
      al.add(" " + a[i] + " " + b[i] + "" + c[i] + ""); 
     } 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(
       MainActivity.this, android.R.layout.simple_list_item_1, al); 

     lv.setAdapter(adapter); 

    } catch (Exception e) { 

    } 

这里我的代码,我的观点的截图:

OUTPUT of my CODE

我想说明的观点其中有三个为TextView,标题为另一个,最后一个为描述。

任何帮助将不胜感激。

+0

为什么投票下来? – Anupam 2013-02-28 15:35:13

制作自定义适配器。将该适配器设置为您的列表视图。你的Adapter类应该扩展ArrayAdapter。在getView()中用3个textviews充气你的自定义xml。使用视图来表现。

她的一个例子http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/。她的更多一点listview http://www.youtube.com/watch?v=wDBM6wVEO70

how to set json parsed data in a listview and then adding search functionality in it。看看答案。我已经在列表视图中使用hashmap和显示的数据,因此在列表视图项上进行搜索。根据您的需要修改相同的内容。

+0

androidhive的例子是使用HashMap,hashmap的问题是它用新的值替换旧的值,通过这个例子,我只得到listview中的最后一个值。你能告诉我怎样才能解决这个问题。 – Anupam 2013-02-28 15:32:15

+0

检查编辑的答案,最后一个链接回答你的问题。 – Raghunandan 2013-02-28 17:05:25

阿努邦,您可以将小数据,如

al.add(" " + apple + " " + ball + "" +cat + ""); 

在单行单列。如果你想在单行中保留那么多的数据(上面提到的图像在单行中)是不可能的。