在 Java 的 Android Studio 中使用 `CardView` 在 `RecyclerView` 中显示 Json 响应
Showing Json response in `RecyclerView` using `CardView` in Android Studio in Java
我必须在使用卡片视图并使用 volley 库的回收站视图中显示我的 JSON 响应。我的 JSON 响应类似于
{
"id": 87,
"parent_id": 0,
"shipping": {
"first_name": "JPbrajesh",
"last_name": "kumar",
},
"payment_method": "COD",
"line_items": [
{
"id": 16,
"name": "abc",
"price": 85
},
{
"id": 17,
"name": "zxc",
"price": 38
},
{
"id": 18,
"name": "asd",
"price": 136
}
],
"tax_lines": [],
"shipping_lines": [
{
"id": 19,
}
],
"fee_lines": [],
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/orders/87"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/orders"
}
]
}
}
`我必须使用 volley 库 在回收站视图中显示 (Line_items)。请提前提供一些相关的 steps.Thankyou 以获得支持。
Volley 是请求信息的图书馆。当 Volley 成功时,你会得到这个 JSON 响应。之后,你需要解析 Line_items 并将它们传递给 RecyclerView Adapter。
希望对您有所帮助。
- 您可以先创建一个 class
LineItem
作为订单项的模型。
- 然后在您希望使用数据的 activity 中,创建一个行项目列表并用您的 json 对象的数据填充该列表。
- 为该行项目创建布局
- 创建一个适配器class
- 声明适配器并将列表传递给它,然后将适配器附加到 recyclerview。
像这样:
ProductCategory
class
package com.pesabay.pesabay;
/**
* Created by Valentin_Kavakure on 20-Jun-17.
*/
public class ProductCategory {
private int id,niveau,order,premier,nbrProduits;
private String name;
private String image;
public ProductCategory() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ProductCategory(int id) {
this.id = id;
}
public int getId() {
return id;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
然后布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
app:cardElevation="6dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="150dp"
app:srcCompat="@drawable/bluebg" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v7.widget.CardView>
适配器:
public class CatGridAdapter extends RecyclerView.Adapter<CatGridAdapter.ViewHolder> {
private List<ProductCategory> categoryList;
private Context context;
private RecyclerViewClickListener recyclerViewClickListener;
public void setRecyclerViewClickListener(RecyclerViewClickListener recyclerViewClickListener) {
this.recyclerViewClickListener = recyclerViewClickListener;
}
public CatGridAdapter(List<ProductCategory> categoryList, Context context) {
this.categoryList = categoryList;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.category_grid_layout,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.title.setText(categoryList.get(position).getName());
}
@Override
public int getItemCount() {
return categoryList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;TextView title;
public ViewHolder(final View itemView) {
super(itemView);
title=(TextView)itemView.findViewById(R.id.title);
imageView=(ImageView)itemView.findViewById(R.id.image);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (recyclerViewClickListener!=null) {
recyclerViewClickListener.recyclerViewItemClicked(v, getAdapterPosition());
}
}
});
}
}
}
在我的 activity:
recyclerView=(RecyclerView)findViewById(R.id.recycler_data);
categoryList=new ArrayList<>();
catGridAdapter=new CatGridAdapter(categoryList,CategoryGrid.this);
pg=(ProgressBar)findViewById(R.id.pg);
catGridAdapter.setRecyclerViewClickListener(new RecyclerViewClickListener() {
@Override
public void recyclerViewItemClicked(View view, int position) {
/* some code*/
});
gridLayoutManager=new GridLayoutManager(CategoryGrid.this,2);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(catGridAdapter);
我必须在使用卡片视图并使用 volley 库的回收站视图中显示我的 JSON 响应。我的 JSON 响应类似于
{
"id": 87,
"parent_id": 0,
"shipping": {
"first_name": "JPbrajesh",
"last_name": "kumar",
},
"payment_method": "COD",
"line_items": [
{
"id": 16,
"name": "abc",
"price": 85
},
{
"id": 17,
"name": "zxc",
"price": 38
},
{
"id": 18,
"name": "asd",
"price": 136
}
],
"tax_lines": [],
"shipping_lines": [
{
"id": 19,
}
],
"fee_lines": [],
"_links": {
"self": [
{
"href": "https://example.com/wp-json/wc/v2/orders/87"
}
],
"collection": [
{
"href": "https://example.com/wp-json/wc/v2/orders"
}
]
}
}
`我必须使用 volley 库 在回收站视图中显示 (Line_items)。请提前提供一些相关的 steps.Thankyou 以获得支持。
Volley 是请求信息的图书馆。当 Volley 成功时,你会得到这个 JSON 响应。之后,你需要解析 Line_items 并将它们传递给 RecyclerView Adapter。
希望对您有所帮助。
- 您可以先创建一个 class
LineItem
作为订单项的模型。 - 然后在您希望使用数据的 activity 中,创建一个行项目列表并用您的 json 对象的数据填充该列表。
- 为该行项目创建布局
- 创建一个适配器class
- 声明适配器并将列表传递给它,然后将适配器附加到 recyclerview。
像这样:
ProductCategory
class
package com.pesabay.pesabay;
/**
* Created by Valentin_Kavakure on 20-Jun-17.
*/
public class ProductCategory {
private int id,niveau,order,premier,nbrProduits;
private String name;
private String image;
public ProductCategory() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ProductCategory(int id) {
this.id = id;
}
public int getId() {
return id;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
然后布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
app:cardElevation="6dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="150dp"
app:srcCompat="@drawable/bluebg" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v7.widget.CardView>
适配器:
public class CatGridAdapter extends RecyclerView.Adapter<CatGridAdapter.ViewHolder> {
private List<ProductCategory> categoryList;
private Context context;
private RecyclerViewClickListener recyclerViewClickListener;
public void setRecyclerViewClickListener(RecyclerViewClickListener recyclerViewClickListener) {
this.recyclerViewClickListener = recyclerViewClickListener;
}
public CatGridAdapter(List<ProductCategory> categoryList, Context context) {
this.categoryList = categoryList;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.category_grid_layout,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.title.setText(categoryList.get(position).getName());
}
@Override
public int getItemCount() {
return categoryList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
ImageView imageView;TextView title;
public ViewHolder(final View itemView) {
super(itemView);
title=(TextView)itemView.findViewById(R.id.title);
imageView=(ImageView)itemView.findViewById(R.id.image);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (recyclerViewClickListener!=null) {
recyclerViewClickListener.recyclerViewItemClicked(v, getAdapterPosition());
}
}
});
}
}
}
在我的 activity:
recyclerView=(RecyclerView)findViewById(R.id.recycler_data);
categoryList=new ArrayList<>();
catGridAdapter=new CatGridAdapter(categoryList,CategoryGrid.this);
pg=(ProgressBar)findViewById(R.id.pg);
catGridAdapter.setRecyclerViewClickListener(new RecyclerViewClickListener() {
@Override
public void recyclerViewItemClicked(View view, int position) {
/* some code*/
});
gridLayoutManager=new GridLayoutManager(CategoryGrid.this,2);
recyclerView.setLayoutManager(gridLayoutManager);
recyclerView.setAdapter(catGridAdapter);