android - 如何从外部更改 recyclerview 项目的布局?

标签 android android-recyclerview

我有一个 RecyclerView,它有一个 Button 和一个 EditText。 我在 RecyclerView 之外有一个按钮。单击外部按钮时,我希望 RecyclerView 中的按钮在隐藏和显示之间切换。 如何做到这一点?

我已尝试将 bool 参数 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);

}

最佳答案

您必须通过适配器层来实现它。

RecyclerView 外部的 Button 必须更新适配器内部的项目(例如 bool 值)。
然后通知更改以更新(例如使用 notifyItemChanged 方法)RecyclerView

类似的东西:

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

使用像这样的适配器:

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

    }

关于android - 如何从外部更改 recyclerview 项目的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35045845/

相关文章:

java - 在recyclerview中突出显示行的问题

安卓 : Z-index of a "RecyclerView.ItemDecoration"

android - 使用 Intent 打开 Hik-Connect

java - 谷歌移动视觉 : Poor FaceDetector performance without CameraSource

java - 如何在文本框中显示二维码扫描仪扫描结果

android - 在 RecyclerView 中使用 Activity

java - RecyclerView onBindViewHolder indexOutOfBounds 尝试在 ArrayList 内绘制元素

android - 使用函数引用来注册和注销监听器是否安全?

android - 如何强制停止正在进行的 Intent Service?

java - 为什么 Recycler View 会滚动回最后三项?