首页 > 软件编程 > Android > android studio SQLite数据ListView

Android Studio如何获取SQLite数据并显示到ListView上

作者:小李也有春天

这篇文章主要介绍了Android Studio获取SQLite数据并显示到ListView上,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

我们在使用ListView的时候需要和数据进行绑定,那么问题来了,如何获取SQLite数据库中的数据并动态的显示到ListView当中呢?其实过程很简单:首先要获取SQLite数据(当然首先你要创建一个SQLite数据库并填写了一些数据),然后引入ListView控件,最后将数据和ListView绑定就好了。

一 获取SQLite数据库中的数据

SQLite是一个轻量级的数据库,它能将数据保存到你的手机,但缺点是一旦软件卸载所有数据将一同被销毁。所以要根据自己的项目需要选择性的使用。下面要演示将SQLite中的数据提取出来。

首先定义一个类用来实例化数据库

public class initdate { public Bitmap bitmap; public String content; public String data; public initdate (Bitmap bitmap ,String context,String time){ this.bitmap =bitmap; this.content =context; this.data =time;

创建一个List对象用来存储数据

List<initdate> list = new ArrayList<>();

获取SQLite中对应表的数据

DBOpenHelper helper = new DBOpenHelper(getActivity(), "数据库的名称", null, 1);//创建对象 SQLiteDatabase db = helper.getWritableDatabase(); Cursor c = db.query("表名", null, null, null, null, null, null); if (c != null && c.getCount() >= 1) { while (c.moveToNext()) { list.add(new initdate(base64ToBitmap(c.getString(c.getColumnIndex("字段名1"))), c.getString(c.getColumnIndex("字段名2")), c.getString(c.getColumnIndex("字段名3")))); c.close(); db.close();//关闭数据库

base64ToBitmap方法用于将String类型转换成Bitmap

public static Bitmap base64ToBitmap(String base64info) { byte[] bytes = Base64.decode(base64info, Base64.DEFAULT); return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

二 引入ListView控件

ListView的引入是比较简单的,我们可以直接将ListView控件拖拽到xml文件中即可。这里不过多介绍

<ListView android:id="@+id/lv_expense" style="@style/Animation.AppCompat.DropDownUp" android:layout_width="match_parent" android:layout_height="wrap_content"/>

三 将数据和ListView绑定

首先将获取到的数据通过一个循环存放到map对象中

for (int i = 0; i < list.size(); i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("image", list.get(i).bitmap); map.put("category", list.get(i).content); map.put("money", list.get(i).data); listitem.add(map); SimpleAdapter adapter = new SimpleAdapter(getActivity() , listitem , R.layout.fragment_one_item , new String[]{"category", "money", "image"} , new int[]{R.id.tv_expense_category, R.id.tv_expense_money, R.id.image_expense}); ListView listView = (ListView) v.findViewById(R.id.lv_expense); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {//设置监听器 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Map<String, Object> map = (Map<String, Object>) parent.getItemAtPosition(position); Toast.makeText(getActivity(), map.get("category").toString(), Toast.LENGTH_LONG).show();

fragment_one_item.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/image_expense" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="10dp" android:paddingRight="10dp" android:paddingBottom="10dp" android:adjustViewBounds="true" android:maxWidth="72dp" android:maxHeight="72dp"/> <TextView android:id="@+id/tv_expense_category" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:padding="10dp"/> <TextView android:id="@+id/tv_expense_money" android:layout_width="wrap_content" android:layout_height="40dp" android:text="100yuan"/> </LinearLayout>

此时我们已经将获取到的数据和ListView进行了绑定,我们可以直接运行,发现除了小照片不能显示外其他的信息都正常显示。这是由于 SimpleAdapter 适配器默认使用显示的图片资源都是程序内的本地资源就是能通过 R.drawable .–得到的,如果我们想要把从数据库中获得的Bitmap类型的图片显示到ListView中就要自己实现 ViewBinder() 这个接口,在里面定义数据和视图的匹配关系 。

for (int i = 0; i < list.size(); i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("image_expense", list.get(i).bitmap); map.put("expense_category", list.get(i).content); map.put("expense_money", list.get(i).data); listitem.add(map); SimpleAdapter adapter = new SimpleAdapter(getActivity() , listitem , R.layout.fragment_one_item , new String[]{"expense_category", "expense_money", "image_expense"} , new int[]{R.id.tv_expense_category, R.id.tv_expense_money, R.id.image_expense}); adapter.setViewBinder(new SimpleAdapter.ViewBinder() { @Override public boolean setViewValue(View view, Object data, String textRepresentation) { if ((view instanceof ImageView) & (data instanceof Bitmap)) { ImageView iv = (ImageView) view; Bitmap bm = (Bitmap) data; iv.setImageBitmap(bm); return true; return false; ListView listView = (ListView) v.findViewById(R.id.lv_expense); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {//设置监听器 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Map<String, Object> map = (Map<String, Object>) parent.getItemAtPosition(position); Toast.makeText(getActivity(), map.get("expense_category").toString(), Toast.LENGTH_LONG).show();

此时照片资源也能正常显示了。

到此这篇关于Android Studio如何获取SQLite数据并显示到ListView上的文章就介绍到这了,更多相关android studio SQLite数据ListView内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
  • Windows下搭建Flutter开发环境
    Windows下搭建Flutter开发环境
    2021-11-11
  • Android Gson基本用法学习
    Android Gson基本用法学习
    2021-12-12
  • Android优化提升应用启动速度及Splash页面的设计
    Android优化提升应用启动速度及Splash页面的设计
    2021-12-12
  • Android NDK开发(C语言字符串)
    Android NDK开发(C语言字符串)
    2021-12-12
  • android整数二分模板彻底解决边界问题
    android整数二分模板彻底解决边界问题
    2021-12-12
  • android studio项目:绑定服务和线程实现计时器
    android studio项目:绑定服务和线程实现计时器
    2021-12-12
  • android studio组件通信:Intend启动Activity接收返回结果
    android studio组件通信:Intend启动Activi
    2021-12-12
  • android studio实验: UI设计 ListView及事件响应
    android studio实验: UI设计
    2021-12-12
  • 美国设下计谋,用娘炮文化重塑日本,已影响至中国
    美国设下计谋,用娘炮文化重塑日本,已影响至中国
    2021-11-19
  • 时空伴随者是什么意思?时空伴随者介绍
    时空伴随者是什么意思?时空伴随者介绍
    2021-11-09
  • 工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    工信部称网盘企业免费用户最低速率应满足基本下载需求,天翼云盘回应:坚决支持,始终
    2021-11-05
  • 2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2022年放假安排出炉:五一连休5天 2022年所有节日一览表
    2021-10-26
  • 电脑版 - 返回首页

    2006-2024 脚本之家 JB51.Net , All Rights Reserved.
    苏ICP备14036222号