アプリケーションの開始時に何も含まれていないフラグメントがありますが、データがロードされた後、ロードされたデータが表示されます。 DataLoadedListenerを実装するonDataLoaded関数のすべてのデータをMainActivityでロードします。データがロードされた後、関数はデータ(ArrayList)を関数呼び出し(initializeAdapter())を介してパラメータとして送信します。次に、関数initializeAdapter()はそれを取得し、カスタムアダプターを初期化します(アダプターはグローバルオブジェクトであり、initializeAdapter()で初期化され、onCreateView()で使用されます)。Androidでフラグメントをリフレッシュする
データがロードされてアダプタが初期化された後、フラグメントビューを更新する必要がありますが、その方法はわかりません。私はたくさんの方法で試しましたが、それを作っていませんでした。
@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);
}
をinitializeAdapter()を呼び出し、これは私がデータがロードされていない場合はロードし、空のアダプターを作成する方法でも興味を持って断片
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();
}
}
あるMainActivityで
onDataLoaded機能まだですか?そして、データが読み込まれて別のアダプターに書き込まれ、使用されるとき。