2016-01-27 53 views
5

我有一個RecyclerView,它有一個Button和一個EditText。 我有一個RecyclerView外的按鈕。點擊外部按鈕,我希望RecyclerView中的按鈕在隱藏和顯示之間切換。 如何做到這一點?如何從外部更改recyclerview項目的佈局?

我試圖將一個布爾參數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); 

} 
+0

請告訴我們你已經嘗試了什麼。 –

回答

7

你必須用適配層實現它。

Button以外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); 
     } 
    }); 


然後更改通知更新(例如與notifyItemChanged法)RecyclerView

Somenthing像

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

工程就像一個魅力。我所做的是將適配器內部的mEditFlag設置爲公開,將其更改爲在適配器外部,並通知適配器進行更新。代碼是:public boolean mEditFlag = false; mCurrentOrderRecyclerAdapter.mEditFlag = mEditFlag; mCurrentOrderRecyclerAdapter.notifyDataSetChanged(); –