2017-07-20 4 views
1

サーバーからのJSONレスポンスを通じてrecyclerviewを実装しました。(ステータスバーの)メニューアイテムとRecyclerViewアイテムの間の相互作用?

リサイクルビュー項目は、画像と時間で構成されています。可視性が不可視に設定されたボタンもあります。

enter image description here

これは、各項目は、ボタンでどのように見えるかである(また、編集)目に見える

さて、編集ボタンは、私はのクリックに(アプリの)メニュー項目にありますすべてのrecyclerviewアイテムボタンを表示したい

これをどのように達成できますか?私は同じものを探してみたが役に立たなかった。

EDIT:RecyclerViewが表示されているスケジュールフラグメントで

この項目コード。

public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

     case R.id.action_edit: 
      //onClick of edit menu item 

      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

これはこれは、あなたがどうかRecyclerViewを追跡し、アダプター内のフィールドを持つことができますScheduleAdapter

public void onBindViewHolder(final CustomScheduleListAdapter.ViewHolder holder, int position) { 

    if (imageLoader == null) { 
     imageLoader = AppController.getInstance().getImageLoader(); 
    } 

    holder.imageView_status.setImageUrl(punches.get(position).getImageURL(), imageLoader); 
    holder.textView_status.setText(punches.get(position).getStatusName()); 
    holder.textView_time.setText(punches.get(position).getTimings()); 

    holder.button_edit.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(final View v) { 
      //Actions performed after button click 
     } 
    }); 
} 
+0

郵便関連するコード。 –

+0

@KNeerajLal完了 – Zx5

答えて

1

のonBindViewHolderあるScheduleAdapter

public class ViewHolder extends RecyclerView.ViewHolder { 

    private NetworkImageView imageView_status; 
    private TextView textView_status; 
    private TextView textView_time; 
    private Button button_edit; 

    public ViewHolder(View itemView) { 
     super(itemView); 

     imageView_status = (NetworkImageView) itemView.findViewById(R.id.imageView); 
     textView_status = (TextView) itemView.findViewById(R.id.textView_Status); 
     textView_time = (TextView) itemView.findViewById(R.id.textView_Time); 
     button_edit = (Button) itemView.findViewById(R.id.button); 
    } 
} 

ViewHolderクラスです項目は可視かどうかに設定する必要があります。次にonBindViewHolderで、それに基づいてビューの可視性を設定します。最後にonOptionsItemSelectedには、そのフィールドの値をアダプタに設定し、notifyItemRangeChangedを呼び出します。例えば

アダプタ:

public class ScheduleAdapter extends RecyclerView.Adapter<CustomScheduleListAdapter.ViewHolder> { 

    private boolean showAllViews = false; 

    public void setShowAllViews(boolean show) { 
     showAllViews = show; 
     notifyItemRangeChanged(0, getItemCount()); 
    } 

    @Override 
    public void onBindViewHolder(CustomScheduleListAdapter.ViewHolder holder, int position) { 
     holder.viewyoucareabout.setVisibility(showAllViews? View.VISIBLE : View.GONE); 
    } 
} 

スケジュールフラグメント:

public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

     case R.id.action_edit: 
      adapter.setShowAllViews(true);  
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 
+0

男、これはまさに私が望んでいたものです!魅力のように働いた。どうもありがとうございます! – Zx5

関連する問題