如何从适配器recycleview传递/获取值复选框到另一个活动

时间:2019-05-16 03:58:41

标签: java android

我想问些什么,我有回收视图,从适配器传递到活动的地方,我的问题是:

我需要从适配器viewHolder Recycleview获取值/数据复选框,以将适配器用于show recycleview的活动

CartAdapter.java

private Context mContext;
private ArrayList<CartModel> mCartList;
public boolean isSelectedAll = true;

public CartAdapter(Context context, ArrayList<CartModel> CartList){
    mContext = context;
    mCartList = CartList;
}

@NonNull
@Override
public CartViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(mContext).inflate(R.layout.masteritem_cardview_cart, viewGroup, false);
    return new CartViewHolder(v);
}

@Override
public void onBindViewHolder(@NonNull CartViewHolder cartViewHolder, int i) {
    CartModel currentItem = mCartList.get(i);

    cartViewHolder.mCartCheckbox.setChecked(true); //i want pass this value

ShoppingCartActivity.java

private RecyclerView mRecyclerView;
private CartAdapter mCartAdapter;
private ArrayList<CartModel> mCartModelList;
private RequestQueue mRequestQueue;
boolean cartfirst;
private Button mButtonCheckout;

public CheckBox mCartCheckAll;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_shopping_cart);

    cartfirst = false;

    mNavigationView = findViewById(R.id.navigation_view);
    mNavigationView.setNavigationItemSelectedListener(this);

    mDrawerLayout = (DrawerLayout) findViewById(R.id.cart_drawer);
    mToogle = new ActionBarDrawerToggle(this,mDrawerLayout,R.string.open,R.string.close);
    mDrawerLayout.addDrawerListener(mToogle);
    mToogle.syncState();
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    mRecyclerView = findViewById(R.id.recycler_view_cart);
    mRecyclerView.setHasFixedSize(true);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this));

    mCartModelList = new ArrayList<>();
    mRequestQueue = Volley.newRequestQueue(this);
    parseJsonCartItem();

    mButtonCheckout = findViewById(R.id.checkOut_btn);
    mCartCheckAll = findViewById(R.id.cartChecKall_checkBox);

    //firsttime checkall
    mCartCheckAll.setChecked(true);

    mButtonCheckout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            AlertDialog.Builder builder = new AlertDialog.Builder(ShoppingCartActivity.this);
            builder.setTitle("Confirm Checkout");
            builder.setMessage("Do you really want to Checkout?");
            builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {

                        public void onClick(DialogInterface dialog, int whichButton) {

                            for (int i = 0; i < mCartModelList.size(); i++){
                                     //to here, for checking value if true they will checkout, else do nothing
                                    //checkOutChartJSON();
                                }
                            }

                            startActivity(new Intent(getApplicationContext(),ShoppingCartActivity.class));
                            finish();   //finish current activity
                            overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
                        }});
            builder.setNegativeButton(android.R.string.no, null);
            builder.create().show();
        }
    });

要检查验证复选框是否为true,它们将执行checkOutChartJSON函数,否则不执行任何操作

1 个答案:

答案 0 :(得分:5)

如果要将数据或值从适配器传递给新活动,则可以使用Intent来完成;如果要将值传递给现有活动,则接口是实现它的最佳方法。

用于新活动。

public interface OnPassingData {
    void onPassing(int value1, String value2,...,int valueN);
}

针对现有活动。

首先,创建一个界面。 OnPassingData

OnPassingData onPassingData;

if (onPassingData != null) {
   onPassingData .onPassing(value1, value2,..,valueN);
}

public void setOnPassingData(OnPassingData onPassingData) {
    this.onPassingData= onPassingData;
}

在适配器中。

adapter.setOnPassingData((value1, value2,...,valueN) -> {

        Log.i(TAG, "value1 : " + value1);
        Log.i(TAG, "value2 : " + value2);
    });

在适配器上调用活动。

{{1}}