【问题标题】:How to make work an Adapter to Listview inside a fragment如何在片段内使适配器工作到 Listview
【发布时间】:2019-05-27 15:47:28
【问题描述】:

我正在使用带有列表视图的片段来显示 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);
    }

正如我所说,应用程序不会崩溃并且界面可以正常工作,但列表视图是空的

【问题讨论】:

    标签: java android android-listview


    【解决方案1】:

    当您返回 Fragment 的视图时,您正在膨胀一个新视图,在 onCreateView 函数的最后一行返回之前膨胀的视图,替换:

    return inflater.inflate(R.layout.fragment_list, container, false);
    

    与:

    return v;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多