如何从外面改变recyclerview项目的布局?

Kai*_*ang 5 android android-recyclerview

我有一个RecyclerView,它有一个Button和一个EditText.我在RecyclerView外面有一个Button.单击外部按钮,我希望RecyclerView中的Button在hide和show之间切换.怎么做?

我试图将一个布尔参数mEditFlag发送到recyclerAdapter,toogle mEditFlag,并通知适配器数据已更改.但它不起作用.

mCurrentOrderRecyclerAdapter = new CurrentOrderRecyclerAdapter(this, mEditFlag);
    rvOrder.setAdapter(mCurrentOrderRecyclerAdapter);

rlEditOrderList.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mEditFlag = !mEditFlag;
            mCurrentOrderRecyclerAdapter.notifyDataSetChanged();
            if (mEditFlag) {
                ivEditOrderList.setImageResource(R.drawable.order_edit_true);
                tvEditOrderList.setText(R.string.order_edit_flag_true);
            } else {
                ivEditOrderList.setImageResource(R.drawable.order_edit_false);
                tvEditOrderList.setText(R.string.order_edit_flag_false);
            }
        }
    });

@Override
public void onBindViewHolder(OrderRecyclerViewHolder holder, final int position) {

    if(editFlag) {
        holder.rlLeftItemRvOrder.setVisibility(View.VISIBLE);
    } else {
        holder.rlLeftItemRvOrder.setVisibility(View.GONE);
    }

    holder.tvNumItemRvOrder.setText(position + "x");
    holder.tvDesItemRvOrder.setText("holder.ivFoodItemRvOrder.setImageResource(R.drawable.drawer_menu)");
    holder.ivFoodItemRvOrder.setImageResource(R.drawable.drawer_menu);

}
Run Code Online (Sandbox Code Playgroud)

Gab*_*tti 7

您必须使用适配器层实现它.

Button外侧的RecyclerView 具有更新内的项目的适配器(例如一个布尔).
然后通知更改更新(例如使用notifyItemChanged方法)RecyclerView

Somenthing喜欢:

rlEditOrderList.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Update the item inside the adapter
            MyObject obj = mAdapter.getItem(position);
            obj.myBoolean= true;
            mAdapter.notifyItemChanged(position);
        }
    });
Run Code Online (Sandbox Code Playgroud)

使用适配器,如:

    public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

        private ArrayList<MyObject> mDataset;

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            //Get the item in the adapter
            MyObject obj = getItem(position);
            if(obj.myBoolean)
               holder.mButtonView.setVisibile(View.VISIBLE);
            else
               holder.mButtonView.setVisibile(View.GONE);
        }

    }
Run Code Online (Sandbox Code Playgroud)