如何加载从JSON数组数据为自定义列表视图 [英] How to load data to Custom Listview from JSON array
本文介绍了如何加载从JSON数组数据为自定义列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我从JSON数组这样的数据加载到正常列表视图
I have loaded data to normal list view from JSON array like this
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
I want to load the data to custom listview. my XML file for custom listview is this receiver.xml
如何从JSON数据加载到定制的ListView?
How can I load data to custom listview from JSON?
推荐答案
- 创建扩展BaseAdpter或ArrayAdpter自定义适配器,并通过数组或ArrayList的构造函数
- 创建一个布局视图(行)
- 这充气中的XML定制适配器getView功能,并设置数据
在
的http://www.josecgomez.com/2010/05/03/android-putting-custom-objects-in-listview/
你跟我混既让你明白......
for you i mixed both to make you understand...
活动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)
list row XML (in layout 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;
}
}
您activty
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 );
}
这篇关于如何加载从JSON数组数据为自定义列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文