2016-01-27 20 views
5

Tôi có một RecyclerView, có một Button và một EditText. Tôi có một nút bên ngoài RecyclerView. Khi nhấp vào nút bên ngoài, tôi muốn nút trong RecyclerView chuyển đổi giữa ẩn và hiển thị. Làm thế nào để làm điều đó?cách thay đổi bố cục của mục recyclerview từ bên ngoài?

Tôi đã cố gửi một tham số boolean mEditFlag tới recyclerAdapter, toogle mEditFlag và thông báo cho bộ điều hợp rằng dữ liệu đã thay đổi. nhưng nó không hoạt động.

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

} 
+0

Hãy cho chúng ta thấy những gì bạn đã cố gắng . –

Trả lời

7

Bạn phải đạt được điều đó với lớp bộ điều hợp.

Button bên ngoài RecyclerViewphải cập nhật mục bên trong bộ điều hợp (ví dụ: boolean).
Sau đó thông báo sự thay đổi để cập nhật (ví dụ với phương pháp notifyItemChanged) các Somenthing RecyclerView

như:

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

với một adapter như:

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

    } 
+0

Làm việc như một sự quyến rũ. Những gì tôi làm là thiết lập mEditFlag bên trong adapter để được công khai, thay đổi nó bên ngoài adapter, và thông báo cho adapter để cập nhật. Code là: public boolean mEditFlag = false; mCurrentOrderRecyclerAdapter.mEditFlag = mEditFlag; mCurrentOrderRecyclerAdapter.notifyDataSetChanged(); –

Các vấn đề liên quan