0

我遵循this question的答案,並嘗試突出顯示RecyclerView中選定的條目。我正在使用主細節流佈局,並且此解決方案對於橫向模式非常適用。在縱向模式下,當我選擇一個條目並轉到第二個活動(包含一個片段)並將其刪除(或進行更改並保存),然後返回MainActivity()時,該位置仍然突出顯示。ANDROID:突出顯示RecyclerView中的選定條目

我該如何解決這個問題?

我的一些代碼:

MyAdapter.java上刪除操作完成你的DetailActivity前

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

如何讓resetSelectedPos()方法在其中將selected_position再次設置爲-1?然後調用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

相關問題