android如何将从数据库读取的数据显示在listview中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android如何将从数据库读取的数据显示在listview中?相关的知识,希望对你有一定的参考价值。

参考技术A final SimpleAdapter adapter = new SimpleAdapter(this, getData(),
R.layout.mainlayout, new String[] "text", "time", "image" ,
new int[] R.id.PL_TextView01, R.id.PL_TextView02,
R.id.PL_ImageView01 );
lv.setAdapter(adapter);

private List<Map<String, Object>> getData()
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();

Cursor cur = DR.query("DB", new String[] "text", "time" , null,
null, null, null, "time desc");
while (cur.moveToNext())
for (int i = 0; i < cur.getCount(); i++)
cur.moveToPosition(i);
String text = cur.getString(0);
String time = cur.getString(1);

map = new HashMap<String, Object>();

map.put("text", text);
map.put("time", time);
map.put("image", R.drawable.ic_menu_close_clear_cancel);
list.add(map);



return list;


我是使用SimpleAdapter 作为listview的适配器 通过数据的query方法 将数据放入listview

Android-从Firebase实时数据库读取数据并显示在RecyclerView上

【中文标题】Android-从Firebase实时数据库读取数据并显示在RecyclerView上【英文标题】:Android-Read Data From Firebase Real Time Database and Displaying on RecyclerView 【发布时间】:2018-11-15 04:26:00 【问题描述】:

我已成功使用 Firebase 的 RTD 保存数据 databaseIngredients.child(StringId).setValue(ingredients); 其中“成分”是从 EditText 获取的字符串,而 StringId 是“推送”方法的唯一 ID。我已经参考了很多教程,但我无法阅读它,我想在每次使用新数据更新我的数据库时更新我的​​ RecyclerView。我只想使用 recyclerView 显示我的数据库中的所有数据。我不理解 ValueEventListener 方法。请耐心等待我的回复,Firebase 新手。

【问题讨论】:

This 是一种推荐的方式,您可以通过这种方式从 Firebase 实时数据库中检索数据并使用 FirebaseRecyclerAdapter 将其显示在 RecyclerView 中。 谢谢,问题已解决 【参考方案1】:

读取数据非常简单,您只需set a listener 监听您提供的database reference 中的change in value

为此目的有两个监听器,

One Time Listener(addListenerForSingleValueEvent),仅在您发出请求后读取数据。为此,

DatabaseReference 参考 = database.getReference("Database").child(StringId).setValue(ingredients);

reference.addListenerForSingleValueEvent(new ValueEventListener() 
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) 
        if(dataSnapShot.exists())
            //update recyclerview or do anything with your data
        
    

    @Override
    public void onCancelled(DatabaseError databaseError) 
        Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
    
);

Continuous Data Listener(addValueEventListener),用于在服务器每次发生变化时获取数据

DatabaseReference 参考 = database.getReference("Database").child(StringId).setValue(ingredients);

    reference.addValueEventListener(new ValueEventListener() 
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) 
            if(dataSnapShot.exists())
                //update recyclerview or do anything with your data
            
        

        @Override
        public void onCancelled(DatabaseError databaseError) 
            Toast.makeText(getApplicationContext(), databaseError.getMessage(), Toast.LENGTH_SHORT).show();
        
    );

【讨论】:

感谢您的详细帮助,但我将如何在 RecyclerView 中显示我的数据? 这也很简单。有很多方法可以做到这一点。这个简单的例子会帮助你。 :) android-examples.com/…【参考方案2】:

您可以使用 FirebaseRecyclerAdapter 。您将需要一个模型类和一个 ViewHolder 类。 如果您使用的是新版本的firebase-ui,那么您必须使用 FirebaseRecyclerOptions 和 FirebaseRecyclerAdapter

Here's the official documentation

【讨论】:

以上是关于android如何将从数据库读取的数据显示在listview中?的主要内容,如果未能解决你的问题,请参考以下文章

android 存在数据库中的动态图片,如何读取出来,显示在ImageView中

如何将从 csv 文件中读取的数据帧打印成字典格式?

android开发: EditText中插入的相册图片如何保存在数据库里,查看的时候又如何读取?

android 怎么读取数据库中的数据?

如何在android中利用shared preferences存储和读取数据

Android HTTPS 客户端不从套接字读取数据