0

AsyncTask의 작업이 완료되면 현재 RecyclerView을 업데이트하려고합니다.RecycleView/CardView 데이터 세트 업데이트

리스너 활동 클래스에서
@Override 
    protected void onPostExecute(String result){ 
     // your stuff 
     listener.onTaskCompleted(data); 
    } 

, 내가 데이터 세트를 업데이트하고 데이터 세트가 변경되었습니다 내 사용자 지정 어댑터를 알리기 위해 시도하고있다 : 여기

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Initializing RecycleView 
    mRecyclerView = (RecyclerView)findViewById(R.id.list); 
    mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 
    mRecyclerView.setItemAnimator(new DefaultItemAnimator()); 

    mAdapter = new AdvertAdapter(this.results, R.layout.card_advert, this); 
    mRecyclerView.setAdapter(mAdapter); 

AsyncTask에서 코드입니다 :

@Override 
public void onTaskCompleted(ArrayList<Data>results) { 
    this.results = results; 
    this.mAdapter.notifyDataSetChanged(); 
    System.out.println("Done."); 
} 

이 목록도 마지막 행 다음에 빈 남아 notifyDataSetChanged() 실제로 아무것도하지 않는 것 같다. 디버거에서 결과에 올바른 결과가 포함되어 있고 onTaskCompleted이 주 스레드에서 실행되고 있는지 확인할 수 있습니다. RecyclerView을 새 결과로 업데이트하려면 어떻게해야합니까?

답변

1

ArrayList<Data>results을 어댑터 데이터에 추가해야한다고 생각합니다. 이 같은

뭔가 :

@Override 
public void onTaskCompleted(ArrayList<Data>results) { 
    //this.results = results; 

    this.mAdapter.clear(); 
    this.mAdapter.add(results); 
    //or this.mAdapter.results = results; 

    this.mAdapter.notifyDataSetChanged(); 
    System.out.println("Done."); 
} 
+0

내가 특정 휴지통 항목을 업데이트하고있는 경우는 위의 "this.mAdapter.notifyItemChanged (getAdapterPosition())"적용하지만 사용합니까? 또는 "this, mAdapter.notifyItemChanged (position)"여기서 position = getAdapterPosition()? – AJW

관련 문제