从活动中获取数据到RecyclerView适配器中?

时间:2019-12-23 16:10:49

标签: java android android-recyclerview

    Intent i = getIntent();
    Bundle myBundle = i.getExtras();
    date1 = myBundle.getString("Date1");
    date2 = myBundle.getString("Date2");
    user = myBundle.getString("UserName");
    chain = myBundle.getString("ChainName");
    shop = myBundle.getString("ShopName");
    product_g = myBundle.getString("ProductGroup");
    product_c = myBundle.getString("ProductCategory");
    product = myBundle.getString("Product");
    count = myBundle.getInt("Count");
    type_c = myBundle.getInt("CountType");
    price = myBundle.getInt("Price");
    type_p = myBundle.getInt("PriceType");
    inch = myBundle.getInt("Inch");
    promotor = myBundle.getInt("Promotor");

我需要在回收站适配器中使用这些变量,以便在RecyclerView适配器中提出改装请求。

     holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            android.app.AlertDialog.Builder mBuilder = new android.app.AlertDialog.Builder(context);
            LayoutInflater li = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            final View mView = li.inflate(R.layout.sales_filtered_shop_pop_up, null);
            final RecyclerView rd3 = (RecyclerView) mView.findViewById(R.id.sales_rv);
            Button mClose = (Button) mView.findViewById(R.id.sales_pop_up_btn_close);
            mBuilder.setView(mView);
            final android.app.AlertDialog dialog = mBuilder.create();
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            dialog.setCancelable(false);

            // here 
            dialog.show();

            mClose.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });
        }
    });

这是我的RecyclerView适配器项目单击。我需要// here中的变量来进行Retrofit api调用。

3 个答案:

答案 0 :(得分:1)

意图用于活动之间的通信,您需要做的是在适配器中创建一个简单的函数,然后调用活动。

适配器:

private String date1;
private String date2;

public void setData(String date1, String date2, ...) {
   this.date1 = date1;
   this.date2 = date2;
   ...
}

活动:

 adapter.setData(date1, date2, ..);

答案 1 :(得分:1)

(但是我无法使用评论) @DoubleD编写的想法是正确的,您需要做的就是创建一个函数(非常类似于构造函数),该函数将在适配器类中接收数据。 您得到的NullPointerException不是来自该函数,请检查您的数据。 并且我建议创建一个自定义对象来容纳这些东西(取决于您的目标)。

答案 2 :(得分:1)

检查此答案。在这里,您将在Activity中添加onClickListener()。

Simple Android RecyclerView example