0
API呼び出しのデータリストがRecyclerView
にあります。私はitemClickListener
インターフェイスを持っていて、アイテムイメージと詳細を含む新しいフラグメントを開きます。itemClickListenerを使用してAPI呼び出しから別のフラグメントにデータを渡す
アイテムをクリックすると、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;
}
}
は、これが私のMainFragmentです:
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());
}
});
}
}
私は私のバンドルにint型を送っていないよと受け取ります。 String imageURLとString descriptionを送信する必要があります。代わりにparseableを使うべきですか? – MikeB
また、parcelableを使用することもできますが、productIdを送信してから、細かい製品の詳細を取得する方が良いでしょう。 –
このような情報を入力することもできます。bundle.putString(String key、String value); bundle.putString( "imageURL"、 "http://myurls.com/imag.png"); bundle.putString( "description "、"テスト製品 "); –