API 呼び出しからのデータのリストをRecyclerView
. itemClickListener
アイテムの画像と詳細を含む新しいフラグメントを開くインターフェイスがあります。
アイテムをクリックすると、データを 2 番目のフラグメントとアダプターに渡す必要があります。それはどのように機能しますか?
このデータをバンドルで送信してから、2 番目のフラグメント内で別の API 呼び出しを行う必要がありますか? それとも、追加の API 呼び出しなしで使用できるデータのバンドルだけですか?
これは私のモデルです:
public class Products {
private String productId;
private String productName;
private String shortDescription;
private String longDescription;
private String price;
@SerializedName("productImage")
private String image;
@SerializedName("reviewRating")
private double rating;
private int reviewCount;
private boolean inStock;
public String getProductId() {
return productId;
}
public String getProductName() {
return productName;
}
public String getShortDescription() {
return shortDescription;
}
public String getLongDescription() {
return longDescription;
}
public String getPrice() {
return price;
}
public String getImage() {
return image;
}
public double getRating() {
return rating;
}
public int getReviewCount() {
return reviewCount;
}
public boolean isInStock() {
return inStock;
}
}
これは私のメインフラグメントです:
private void setBundle(int position) {
args = new Bundle();
String[] clickedItem = {apiProducts.get(position).getImage(),
apiProducts.get(position).getLongDescription(),
String.valueOf(apiProducts.get(position).isInStock())};
args.putStringArray("Item", clickedItem);
}
private void productsClickListener() {
if (apiObjectAdapter != null) {
apiObjectAdapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(View itemView, int position) {
setBundle(position);
setDetailsFragment(args);
}
});
}
}
私のアダプター:
public class ApiObjectAdapter extends RecyclerView.Adapter<ApiObjectAdapter.MyViewHolder> {
public void setOnItemClickListener(OnItemClickListener listener) {
this.listener = listener;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.product_name)
public TextView name;
@BindView(R.id.product_rating)
public TextView rating;
@BindView(R.id.product_price)
public TextView price;
public MyViewHolder(final View view) {
super(view);
this.parentView = view;
try {
ButterKnife.bind(this, view);
} catch (Exception e) {
e.printStackTrace();
}
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null)
listener.onItemClick(view, getLayoutPosition());
}
});
}
}