在Android中显示JSON数据通常涉及解析JSON数据并将其展示在UI组件中。以下是完整的实现方案:
JSON(JavaScript Object Notation)是一种轻量级数据交换格式,Android通过org.json
包或第三方库(如Gson、Moshi)解析JSON数据。
在build.gradle
中添加:
implementation 'com.google.code.gson:gson:2.8.9'
假设JSON数据如下:
{
"users": [
{"name": "Alice", "age": 25},
{"name": "Bob", "age": 30}
]
}
org.json
try {
JSONObject root = new JSONObject(jsonString);
JSONArray users = root.getJSONArray("users");
for (int i = 0; i < users.length(); i++) {
JSONObject user = users.getJSONObject(i);
String name = user.getString("name");
int age = user.getInt("age");
// 处理数据...
}
} catch (JSONException e) {
e.printStackTrace();
}
定义数据类:
public class User {
String name;
int age;
}
public class UserList {
List<User> users;
}
解析代码:
UserList userList = new Gson().fromJson(jsonString, UserList.class);
for (User user : userList.users) {
Log.d("User", user.name + " - " + user.age);
}
public class UserAdapter extends RecyclerView.Adapter<UserAdapter.ViewHolder> {
private List<User> users;
public UserAdapter(List<User> users) {
this.users = users;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_user, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.name.setText(users.get(position).name);
holder.age.setText(String.valueOf(users.get(position).age));
}
static class ViewHolder extends RecyclerView.ViewHolder {
TextView name, age;
ViewHolder(View itemView) {
super(itemView);
name = itemView.findViewById(R.id.name);
age = itemView.findViewById(R.id.age);
}
}
}
item_user.xml
):<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
<TextView android:id="@+id/name" android:layout_width="wrap_content"/>
<TextView android:id="@+id/age" android:layout_width="wrap_content"/>
</LinearLayout>
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(new UserAdapter(userList.users));
notifyDataSetChanged
。runOnUiThread
中更新数据,或使用LiveData
+ViewModel
。Streaming API
(如Gson的JsonReader
)减少内存占用。通过上述方法,可以高效地在Android中解析和展示JSON数据。
没有搜到相关的文章