如何为ListView创建自定义ArrayAdapter
我必须从我得到的JSON
响应中自定义ArrayAdapter
。这是从那里我得到响应,并把它在简单ArrayAdapter
与android.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) {
}
这里我的代码,我的观点的截图:
我想说明的观点其中有三个为TextView
,标题为另一个,最后一个为描述。
任何帮助将不胜感激。
制作自定义适配器。将该适配器设置为您的列表视图。你的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和显示的数据,因此在列表视图项上进行搜索。根据您的需要修改相同的内容。
androidhive的例子是使用HashMap,hashmap的问题是它用新的值替换旧的值,通过这个例子,我只得到listview中的最后一个值。你能告诉我怎样才能解决这个问题。 – Anupam 2013-02-28 15:32:15
检查编辑的答案,最后一个链接回答你的问题。 – Raghunandan 2013-02-28 17:05:25
阿努邦,您可以将小数据,如
al.add(" " + apple + " " + ball + "" +cat + "");
在单行单列。如果你想在单行中保留那么多的数据(上面提到的图像在单行中)是不可能的。
为什么投票下来? – Anupam 2013-02-28 15:35:13