2016-01-27 16 views
5

私はボタンとEditTextを持つRecyclerViewを持っています。 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

アダプター層で達成する必要があります。

は、内の項目を更新する必要があります(ブール値など)。以下のようなアダプタと

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

関連する問題