[Android] RecyclerView 어댑터로 데이터를 업데이트하는 가장 좋은 방법



Answers

@ inmyth의 대답은 정확합니다. 빈 목록을 처리하기 위해 코드를 약간 수정하십시오.

public class NewsAdapter extends RecyclerView.Adapter<...> {    
    ...
    private static List mFeedsList;
    ...    
    public void swap(List list){
            if (mFeedsList != null) {
                mFeedsList.clear();
                mFeedsList.addAll(list);
            }
            else {
                mFeedsList = list;
            }
            notifyDataSetChanged();
    }

Retrofit의 onResponse () use에서 Retrofit을 사용하여 목록을 가져옵니다.

adapter.swap(feedList);
Question

이 질문에는 이미 답변이 있습니다.

ListView 에서 클래식 어댑터를 사용해야 할 때 ListView 에서 다음과 같이 데이터를 업데이트합니다.

myAdapter.swapArray(data);

public swapArray(List<Data> data) {
  clear();
  addAll(data);
  notifyDataSetChanged();
}

RecyclerView 위한 가장 좋은 방법이 무엇인지 알고 싶습니다. RecyclerView 어댑터에서는 ListView 에서와 같이 addAllclear 수 없습니다.

그래서 notifyDataSetChanged 와 함께 시도했지만 작동하지 않았습니다. 그럼 내보기에 swapAdapter와 함께 노력 :

List<Data> data = newData;

MyRecyclerAdapter adapter = new MyRecyclerAdapter(data);

// swapAdapter on my recyclerView (instead of a .setAdapter like with a classic listView).
recyclerViewList.swapAdapter(adapter, false);

그러나이 마지막 솔루션으로, 나는 여전히 어댑터의 새로운 인스턴스를 만들어야 만하고, 그것이 최상의 솔루션이 아닌 것처럼 느낍니다. 새로운 MyRecyclerAdapter 없으면 데이터를 변경할 수 있어야합니다.




내 비슷한 문제에 대한 해결책을 찾았습니다 :

private ExtendedHashMap mData = new ExtendedHashMap();
private  String[] mKeys;

public void setNewData(ExtendedHashMap data) {
    mData.putAll(data);
    mKeys = data.keySet().toArray(new String[data.size()]);
    notifyDataSetChanged();
}

clear-command 사용

mData.clear()

Nessescary가 아니다.




Links