使用itemClickListener将数据从api调用传递到另一个片段

时间:2016-06-28 02:37:40

标签: android api android-fragments bundle pass-data

我的API调用数据列表已列入input。我有一个RecyclerView界面,用于打开包含项目图像和详细信息的新片段。

当我点击该项目时,我需要将数据传递给第二个片段及其适配器。它将如何运作?

我是否需要使用捆绑包发送此数据,然后在第二个片段中进行另一个API调用?或者只是包含数据的包,我可以在没有额外的API调用的情况下使用它?

这是我的模特:

itemClickListener

这是我的MainFragment:

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);
            }
        });
    }

}

1 个答案:

答案 0 :(得分:0)

使用捆绑 表单发件人将数据设为

Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putInt(key, value);
fragment.setArguments(bundle);

并在下一个接收器中接收为

Bundle bundle = this.getArguments();
int myInt = bundle.getInt(key, defaultValue);

有关https://developer.android.com/reference/android/os/Bundle.html

的更多详细信息