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中
android开发: EditText中插入的相册图片如何保存在数据库里,查看的时候又如何读取?