【问题标题】:How to fill ListView Adapter items with data from FirebaseDatabase [Android Studio]如何使用 FirebaseDatabase [Android Studio] 中的数据填充 ListView 适配器项目
【发布时间】:2016-06-22 05:32:38
【问题描述】:

我正在构建一个应用程序,它在ListView 适配器中显示来自 firebase 数据库 的数据,但列表视图没有填充数据。数据库工作。我在专门创建的布局上使用textview.setText 方法进行了尝试。

public class MainActivityListFragment extends ListFragment {
    private ArrayList<typ> typy;
    private typAdapter typAdapter;
    String tytul1, rodzaj1, godzina1, typ1, kurs1;

    DatabaseReference mRootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference mmecz1 = mRootRef.child("mecz1");
    DatabaseReference mtytul1 = mmecz1.child("tytul1");
    DatabaseReference mrodzaj1 = mmecz1.child("rodzaj1");
    DatabaseReference mgodzina1 = mmecz1.child("godzina1");
    DatabaseReference mtyp1 = mmecz1.child("typ1");
    DatabaseReference mkurs1 = mmecz1.child("kurs1");

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        typy = new ArrayList<typ>();
        typy.add(new typ(tytul1, rodzaj1, godzina1, typ1, kurs1));
        typy.add(new typ("Portugalia - Islandia", "wygrana drużyny", "21:00", "1", "1.50"));
        typAdapter = new typAdapter(getActivity(), typy);
        setListAdapter(typAdapter);

        getListView().setDivider(ContextCompat.getDrawable(getActivity(), android.R.color.black));
        getListView().setDividerHeight(0);
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
    }

    @Override
    public void onStart() {
        super.onStart();
        mtytul1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String text1 = dataSnapshot.getValue(String.class);
                tytul1 = text1;
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                Toast.makeText(getActivity(),"No internet connection",Toast.LENGTH_SHORT).show();
            }
        });
        mrodzaj1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String text2 = dataSnapshot.getValue(String.class);
                rodzaj1=text2;
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
        mgodzina1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String text3 = dataSnapshot.getValue(String.class);
                godzina1 = text3;
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
        mtyp1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String text4 = dataSnapshot.getValue(String.class);
                typ1 = text4;
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
        mkurs1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String text5 = dataSnapshot.getValue(String.class);
                kurs1 = text5;
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
}

【问题讨论】:

  • 您的typAdapter 是否扩展FirebaseListAdapter
  • 没有。我没有使用 Firebase 适配器。我创建了自定义 ListView 适配器

标签: java android listview firebase firebase-realtime-database


【解决方案1】:

您需要使用 FirebaseListAdapter。

将此依赖项添加到您的项目中:

compile 'com.firebaseui:firebase-ui-database:0.4.0'

然后按照他们的 Github 自述文件中的说明进行操作:

https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md

【讨论】:

    【解决方案2】:

    这不起作用,因为在执行 typy.add() 时,您的字符串中的值为 null。
    为了实现你想要的,你必须想办法在typy.add() 中添加你的字符串到你的.addValueEventListener 中,然后再调用typAdapter.notifyDataSetChanged()

    如果您的 ListView 很简单,您还可以使用具有 FirebaseListAdapters 的 Firebase UI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 2018-02-10
      • 2016-11-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      相关资源
      最近更新 更多