使用Android,编写一个通过列表组件ListView显示Json数组数据的程序。其数据可用JSON数组表达: [{"sid":1001, "name":"张大山"}, {"sid":1002, "name":"李小丽"} ];
时间: 2024-06-02 14:05:53 浏览: 31
要使用Android编写一个通过列表组件ListView显示Json数组数据的程序,需要以下步骤:
1. 创建一个ListView布局,可以使用XML或Java代码创建;
2. 创建一个适配器Adapter,用于将Json数组中的数据与ListView进行绑定;
3. 解析Json数组,将数据存储到一个List集合中;
4. 在适配器中实现getView()方法,用于将数据绑定到ListView上;
5. 在主Activity中设置ListView的适配器。
具体实现代码如下:
```
public class MainActivity extends AppCompatActivity {
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = findViewById(R.id.list_view);
// 解析Json数组并存储到List集合中
List<Student> list = new ArrayList<>();
String jsonStr = "[{\"sid\":1001, \"name\":\"张大山\"}, {\"sid\":1002, \"name\":\"李小丽\"}]";
try {
JSONArray jsonArray = new JSONArray(jsonStr);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
int sid = jsonObject.getInt("sid");
String name = jsonObject.getString("name");
Student student = new Student(sid, name);
list.add(student);
}
} catch (JSONException e) {
e.printStackTrace();
}
// 创建适配器
MyAdapter adapter = new MyAdapter(this, list);
mListView.setAdapter(adapter);
}
private class MyAdapter extends BaseAdapter {
private Context mContext;
private List<Student> mList;
public MyAdapter(Context context, List<Student> list) {
mContext = context;
mList = list;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_student, parent, false);
viewHolder = new ViewHolder();
viewHolder.tvSid = convertView.findViewById(R.id.tv_sid);
viewHolder.tvName = convertView.findViewById(R.id.tv_name);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.tvSid.setText(String.valueOf(mList.get(position).getSid()));
viewHolder.tvName.setText(mList.get(position).getName());
return convertView;
}
private class ViewHolder {
TextView tvSid;
TextView tvName;
}
}
}
```
其中,Student类的定义如下:
```
public class Student {
private int sid;
private String name;
public Student(int sid, String name) {
this.sid = sid;
this.name = name;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)