我有一个片段,它在应用程序启动时不包含任何内容,但是在加载数据之后,它应该显示加载的数据。我在加载MainActivity的函数onDataLoaded中实现了DataLoadedListener。数据加载后,函数通过函数调用(initializeAdapter())将数据(ArrayList)作为参数发送。然后,函数initializeAdapter()获取它并初始化定制的适配器(适配器是一个全局对象,在initializeAdapter()中初始化并在onCreateView()中使用)。在Android中刷新片段
我想我应该在数据加载和适配器初始化后刷新片段视图,但我不知道该怎么做。我尝试了很多方法,但没有成功。在MainActivity
onDataLoaded函数调用initializeAdapter()
@Override
public void onDataLoaded(List<Grad> gradovi, List<Ponuda> ponude) {
Spinner spinnerGradovi = (Spinner) findViewById(R.id.gradovi_spinner);
ArrayAdapter<String> adapterGradovi;
List<String> listaGradova = new ArrayList<>();
ArrayList<Ponuda> ponudaArrayList = new ArrayList<Ponuda>();
ponudaLista = ponude;
gradLista = gradovi;
for(Grad grad : gradovi){
listaGradova.add(grad.getNaziv());
}
for(Ponuda ponuda : ponude){
ponudaArrayList.add(ponuda);
}
adapterGradovi = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, listaGradova);
spinnerGradovi.setAdapter(adapterGradovi);
Fragment fragmentGet = svePonudeFragment;
((SvePonudeFragment)fragmentGet).initializeAdapter(ponudaArrayList);
}
,这是一个片段
public class SvePonudeFragment extends Fragment {
private RecyclerView rv;
RVAdapter adapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.sve_ponude_fragment, container, false);
rv = (RecyclerView) rootView.findViewById(R.id.rv);
LinearLayoutManager llm = new LinearLayoutManager(getActivity());
rv.setLayoutManager(llm);
rv.setAdapter(adapter);
return rootView;
}
public void initializeAdapter(List<Ponuda> preuzetePonude){
adapter = new RVAdapter(preuzetePonude);
//this isn't working
/*FragmentManager manager = getActivity().getSupportFragmentManager();
android.support.v4.app.FragmentTransaction ft = manager.beginTransaction();
ft.detach(this).attach(this).commit();*/
//this is not working, neither
Fragment frg = getFragmentManager().findFragmentByTag("sve_ponude_fragment_tag");
final android.support.v4.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();
}
}
我也有兴趣在如何在数据没有被装载做它加载一个空适配器然而?并且当数据被加载以填充另一个适配器并使用它时。