[英]How to make work an Adapter to Listview inside a fragment
我正在使用帶有listview的片段來顯示firebase數據庫中的一些元素。 但看起來適配器無法正常工作; 我跟蹤代碼,一切看起來都很好。 有誰知道我在哪里有錯誤?
我在適配器上下文中嘗試了getActivity()。getBaseContext()和getContext(),但它也不起作用
public class ListFragment extends Fragment implements View.OnClickListener{
private RecyclerView rcv;
private ListView lstvw;
DatabaseReference ddbbr;
public ListFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_list, container, false);
lstvw = v.findViewById(R.id.lstvwlistamini);
ddbbr = FirebaseDatabase.getInstance().getReference("juegos");
ddbbr.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
ArrayAdapter<String> adapter;
ArrayList<String> list = new ArrayList<String>();
for (DataSnapshot datasnapshot: dataSnapshot.getChildren()) {
Juego juego = datasnapshot.getValue(Juego.class);
String titulo = juego.getTitulo();
list.add(titulo);
Toast toast = Toast.makeText(getContext(),list.get(0).toString(),Toast.LENGTH_LONG);
toast.show();
}
adapter = new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,list);
lstvw.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_list, container, false);
}
正如我所說,應用程序不會崩潰,界面可以正常工作,但列表視圖是空的
當你返回Fragment的視圖時,你正在膨脹一個新視圖,在onCreateView函數的最后一行返回之前膨脹的視圖,替換:
return inflater.inflate(R.layout.fragment_list, container, false);
用:
return v;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.