0

私はthis questionへの答えに続き、選択した項目をRecyclerViewからハイライト表示しようとしました。私はマスターディテールフローレイアウトで作業しています。このソリューションは、ランドスケープモードではうまく機能します。ポートレートモードで、項目を選択して2番目のアクティビティ(フラグメントを含む)に移動して削除するか、または変更して保存するとMainActivity()に戻り、その位置はまだ強調表示されています。アンドロイド:RecyclerViewで選択された項目を強調表示

どうすれば解決できますか?

私のコードの一部:削除操作であなたのDetailActivityを終了する前に結果を設定し

MyAdapter.java

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { 
    int selected_position=-1; 

    @Override 
    public void onBindViewHolder(MyAdapter.ViewHolder viewHolder, final int position) { 

     // Set Text and Checkbox 

     if(selected_position == viewHolder.getAdapterPosition()){ 
      viewHolder.itemView.setBackgroundColor(Color.MAGENTA); 
     }else{ 
      viewHolder.itemView.setBackgroundColor(Color.TRANSPARENT); 
     } 
     viewHolder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mCallback.onEntrySelected(position); 
       notifyItemChanged(selected_position); 
       selected_position = position; 
       notifyItemChanged(selected_position); 
      } 
     }); 
    } 
    public void dismissItem(int pos) { 
     selected_position=-1; 
     mEntries.remove(pos); 
     notifyDataSetChanged(); 
    } 
} 

All Screenshots

+0

selected_positionを-1に設定し直したresetSelectedPos()メソッドはどうでしょうか? notifyDataSetChanged()を呼び出します。これは、BindViewHolderを再実行して問題を解決する必要がありますか? – Smashing

答えて

0

。そのためonPauseアンドロイドを呼び出す前に

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    selectedPosition = -1; 
    mAdapter.notifyDataSetChanged(); 
} 

活動状態を保存します。そして、あなたにonActivityResultであなたに必要なアクションを処理することができます。

ここで実際の例をチェックアウトすることができます。私にはコード品質についてご容赦ください。 MasterDetailStackOverFlow - GitHub

関連する問題