热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

AndroidListView数据绑定显示的三种解决方法

本篇文章小编为大家介绍,AndroidListView数据绑定显示的三种解决方法。需要的朋友参考下

首先,创建一个用于显示一个item的layout,名为item.xml

代码如下:


android:layout_
android:layout_
android:orientation="horizontal" >

android:id="@+id/name"
android:layout_
android:layout_ />

android:id="@+id/phone"
android:layout_
android:layout_ />

android:id="@+id/amount"
android:layout_
android:layout_ />



然后,在main.xml中,添加一个ListView数据显示控件,添加id名称为listview

接下来便是进行数据的绑定,总共分为三种方法:

代码如下:

 private void show1() {
  List persOns= ps.getScollData(0, 10);
  List> data = new ArrayList>();
  for (Person person : persons) {
   HashMap item = new HashMap();
   item.put("amount", person.getAmount());
   item.put("id", person.getId());
   item.put("name", person.getName());
   item.put("phone", person.getPhone());
   data.add(item);
  }
  SimpleAdapter adapter = new SimpleAdapter(getApplicationContext(),data, R.layout.item,
    new String[] { "name", "phone", "amount" }, new int[] {R.id.name, R.id.phone, R.id.amount });
          // item表示为之前定义的item.xml,表示将data集合中的每一个对象绑定到些item中,即将data中的每一项绑定到一个视图item上;
          // 后两个参数表示把结果集中哪些key的值绑定到哪些控件上;(把结果集中key为name对应的对象绑定到视图中id为name的控件上)
  listview.setAdapter(adapter);//内部处理流程如下
  // {int total = adapter.getCount();// 获取得到的数据总数
  // int perpage = 7;//获取每一页的显示条目数,
  // for (int i = 0; i   // View view = adapter.getView(i, convertView, parent);//第二次执行时会将前一次执行的view传给convertView;
  // 显示条目
  // }}
 }

 private void show2() {//此方法需要一个结果集中的Cursor,要求Cursor中需要有一个名称为_id的字段;所以添加一个获取Cursor的方法如下!
  Cursor cursor = ps.getCursorScollData(0, 10);
  SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.item, cursor,
    new String[] { "name", "phone", "amount" }, new int[] {R.id.name, R.id.phone, R.id.amount });
  listview.setAdapter(adapter);
 }

     public Cursor getCursorScollData(int offest, int maxResult) {
  SQLiteDatabase db = dbOpenHelper.getReadableDatabase();//因为要求结果集中要有一个名为_id的字,所以SQL语句如下!
  Cursor cursor = db.rawQuery("select personid as _id,name,phone,amount from person order by personid asc limit ?,?",
      new String[] { String.valueOf(offest),String.valueOf(maxResult) });
  // db.query(table, columns, selection, selectionArgs, groupBy, having,orderBy, limit);
  return cursor;
 }

 private void show3() {
  List persOns= ps.getScollData(0, 10);// PersonAdapter见下一章节自定义适配器
  PersonAdapter adapter = new PersonAdapter(getApplicationContext(),persons, R.layout.item);
  listview.setAdapter(adapter);
 }


当每点击一项需要获取此项的相关信息时可以添加此方法:
listview.setOnItemClickListener(new ItemClickListener());

 private final class ItemClickListener implements OnItemClickListener {
  @Override//此方法中第一个参数为显示数据(item项)的控件,在此例子中即为ListView;第三个参数为点击项的位置,
  public void onItemClick(AdapterView parent, View arg1, int position,long arg3) {
   ListView lview = (ListView) parent;
   // show3()方法对应的处理方法
   // Person person = (Person) lview.getItemAtPosition(position);
   // Toast.makeText(getApplicationContext(),person.getId().toString(),1).show();

              // show2()方法对应的处理方法
              // show2方法中,adapter返回的是Cursor,
   // Cursor cursor = (Cursor) lview.getItemAtPosition(position);
   // int persOnid= cursor.getInt(cursor.getColumnIndex("_id"));
   // Toast.makeText(getApplicationContext(), personid + "", 1).show();

              // show1()方法对应的处理方法
   // show1方法中,adapter返回的是Map,再对Map进行操作取出相应的id值
   HashMap item = (HashMap) lview.getItemAtPosition(position);
   int persOnid= (Integer) item.get("id");
   Toast.makeText(getApplicationContext(), personid + "", 1).show();
  }
 }


推荐阅读
  • 本文探讨了如何利用 Hibernate 进行高效的批量更新和删除操作,包括直接使用 Hibernate API 的方法及其局限性,以及如何通过 JDBC 或存储过程实现更优的性能。 ... [详细]
  • Android中实现复合旋转动画效果
    本文将探讨如何在Android应用中实现动态且吸引人的旋转动画。通过结合多种动画类型,如透明度变化、旋转、缩放和位移,可以创造出更为复杂的视觉效果。我们将从XML布局和Java代码两个方面进行详细介绍。 ... [详细]
  • Android商城应用开发指南(第二部分):创建启动欢迎页
    大多数商城应用程序在启动时会显示一个欢迎页面,以提升用户体验。本文将指导您如何实现一个基本的欢迎页,该页面会在用户打开应用后短暂展示,随后自动跳转至主界面。 ... [详细]
  • 本文总结了MySQL的一些实用技巧,包括查询版本、修改字段属性、添加自动增长字段、备份与恢复数据库等操作,并提供了一些常见的SQL语句示例。 ... [详细]
  • 详解 | 日志系统ViseLog的基本使用与功能
    本文详细介绍了日志系统ViseLog的使用方法及其核心功能,旨在帮助开发者更好地理解和利用这一工具,提高开发效率。 ... [详细]
  • 本文探讨了随着并发需求的增长,MySQL数据库架构如何从简单的单一实例发展到复杂的分布式系统,以及每一步演进背后的原理和技术解决方案。 ... [详细]
  • Android中解析XML文件的实践指南
    本文详细介绍了在Android应用开发中解析XML文件的方法,包括从本地文件和网络资源获取XML文件的不同途径,以及使用DOM、SAX和PULL三种解析方式的具体实现。 ... [详细]
  • ServletContext接口在Java Web开发中扮演着重要角色,它提供了一种方式来获取关于整个Web应用程序的信息。通过ServletContext,开发者可以访问初始化参数、共享数据以及应用资源。 ... [详细]
  • MyBatis 开发技巧:延迟加载与查询缓存详解
    本文详细探讨了 MyBatis 中的延迟加载和查询缓存机制,旨在帮助开发者更好地理解和利用这些特性来优化数据库访问性能。 ... [详细]
  • 本项目展示了如何利用Java技术构建一个高效的考勤数据管理系统,特别适用于处理大量数据的情况,如企业员工考勤记录等。项目包括完整的源代码和详细的文档说明,适合用于毕业设计或实际工作场景。 ... [详细]
  • 利用RabbitMQ实现高效延迟任务处理
    本文详细探讨了如何利用RabbitMQ实现延迟任务,包括其应用场景、实现原理、系统设计以及具体的Spring Boot实现方式。 ... [详细]
  • 本文档旨在帮助开发者回顾游戏开发中的人工智能技术,涵盖移动算法、群聚行为、路径规划、脚本AI、有限状态机、模糊逻辑、规则式AI、概率论与贝叶斯技术、神经网络及遗传算法等内容。 ... [详细]
  • Photoshop打造炫酷金色锈迹立体文字
    本文介绍如何使用Photoshop创建具有金属质感和锈迹效果的立体文字。通过叠加多个带有特定图层样式的文字图层,结合火焰背景,营造出独特的视觉冲击力。 ... [详细]
  • 今天发现Mysql的主从数据库没有同步先上Master库:mysqlshowprocesslist;查看下进程是否Sleep太多。发现很正常。showmaster ... [详细]
  • 本文总结了WebSphere应用服务器出现宕机问题的解决方法,重点讨论了关键参数的调整,包括数据源连接池、线程池设置以及JVM堆大小等,旨在提升系统的稳定性和性能。 ... [详细]
author-avatar
处男是你_909
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有