在Java中使用Volley库将JSON API数据放到RecyclerView中的步骤如下:
dependencies {
implementation 'com.android.volley:volley:1.2.0'
}
public class DataModel {
private String title;
private String description;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
public class DataAdapter extends RecyclerView.Adapter<DataAdapter.ViewHolder> {
private List<DataModel> dataList;
public DataAdapter(List<DataModel> dataList) {
this.dataList = dataList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
DataModel data = dataList.get(position);
holder.titleTextView.setText(data.getTitle());
holder.descriptionTextView.setText(data.getDescription());
}
@Override
public int getItemCount() {
return dataList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView titleTextView;
TextView descriptionTextView;
public ViewHolder(@NonNull View itemView) {
super(itemView);
titleTextView = itemView.findViewById(R.id.titleTextView);
descriptionTextView = itemView.findViewById(R.id.descriptionTextView);
}
}
}
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private DataAdapter adapter;
private List<DataModel> dataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
dataList = new ArrayList<>();
adapter = new DataAdapter(dataList);
recyclerView.setAdapter(adapter);
// 使用Volley库发送网络请求获取JSON数据
String url = "https://example.com/api/data";
RequestQueue queue = Volley.newRequestQueue(this);
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
DataModel data = new DataModel();
data.setTitle(jsonObject.getString("title"));
data.setDescription(jsonObject.getString("description"));
dataList.add(data);
}
adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
queue.add(request);
}
}
以上代码假设你已经在布局文件中定义了一个RecyclerView,并创建了一个item_layout.xml文件用于定义每个列表项的布局。
这样,当你的Activity或Fragment启动时,Volley库将发送一个GET请求到指定的JSON API地址,并将返回的JSON数据解析为DataModel对象。然后,将DataModel对象添加到数据列表中,并通知适配器数据已更改。RecyclerView将使用适配器来显示数据列表中的项。
请注意,这只是一个简单的示例,你可能需要根据你的实际需求进行适当的修改和调整。
领取专属 10元无门槛券
手把手带您无忧上云