【发布时间】:2016-11-21 21:52:58
【问题描述】:
我有一个在应用程序启动时不包含任何内容的片段,但在加载数据后,它应该显示加载的数据。我在实现 DataLoadedListener 的函数 onDataLoaded 中的 MainActivity 中加载所有数据。加载数据后,函数通过函数调用 (initializeAdapter()) 将数据 (ArrayList) 作为参数发送。然后,函数 initializeAdapter() 获取它并初始化定制的适配器(适配器是一个全局对象,在 initializeAdapter() 中初始化并在 onCreateView() 中使用)。
我想我应该在数据加载完毕并初始化适配器之后刷新片段视图,但我不知道该怎么做。我尝试了很多方法,但都没有成功。
MainActivity中调用initializeAdapter()的onDataLoaded函数
@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();
}
}
我也对如何制作一个空的适配器感兴趣,如果数据还没有加载,它会加载?并且在加载数据时填写另一个适配器并使用它。
【问题讨论】:
标签: java android android-fragments fragment adapter