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