2015-03-28 3 views
2

У меня есть простой макет с recyclerview. В методе onCreateView я создал Recyclerview:Android refresh Recyclerview delayed

@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_overview, container, false); 
    recyclerView = (RecyclerView) rootView.findViewById(R.id.rv_overview); 
    list = new ArrayList<>(); 
    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity()); 
    layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
    recyclerView.setLayoutManager(layoutManager); 

    list = getOverviewList(getActivity()); 
    adapter = new OverviewRecyclerAdapter(getActivity(), list); 
    recyclerView.setAdapter(adapter); 
    final Context context = getActivity(); 
    new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      list =getOverviewList(context); 
      adapter.notifyDataSetChanged(); 
     } 
    }, 1000); 
    return rootView; 
} 

Как вы можете видеть, что Recyclerview нужно обновить секунду после того, как точка зрения creted. Я попытался достичь thsi с помощью Handler. Но код внутри обработчика не обновляет Recyclerview. Но, очевидно, это должно быть.

ответ

2

Но, очевидно, это должно быть.

не это не должно, потому что вы не устанавливая новые данные к адаптеру

список = getOverviewList (контекста);

вы просто установка переменной нового списка, но это не меняет старый список адаптер

редактировать:

попробовать, как этот

list.clear(); 
list.addAll(getOverviewList(context)); 
+0

Спасибо, человек, это работает просто отлично :) –

0

кодекса выглядит хорошо должен определенно работать, вы уверены, что вы изменяете список, который вы получаете во втором вызове getOverViewList (Context ctx), иначе будет сложно определить, обновляется ли он, потому что он загружает те же данные снова