android 开发之路-------ListView 使用

        这张文章主要针对老道(csdn官方群)兄弟说上一博客SQLite的具体使用没写的很明白做补充。。非常感谢来捧场。你是第一个 偷笑

在这之前我犯了一个非常低级的错误。ListView 里面是不能添加控件的。只能后台引用其他的UI。希望新学的兄弟别犯同样的错误。

 

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@+id/lvSource"
        android:layout_width="match_parent"
        android:layout_height="313dp"
        android:layout_x="0dp"
        android:layout_y="0dp" />
</AbsoluteLayout>

这是ListView_Demo.xml 代码 

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:orientation="horizontal"
    android:layout_height="match_parent" >

        <TextView
        android:id="@+id/Uname"
        android:layout_width="200dp"
        android:layout_height="match_parent"
         />

    <TextView
        android:id="@+id/Upwd"
        android:layout_width="200dp"
        android:layout_height="match_parent"
         />

</LinearLayout>


这是ListViewItem 的代码。。主要显示 listView 一行里有 一个name一个pwd 字段数据,下面主要讲解后台代码

         private ListView  list;
	private SqlLiteCreateDateBase  sqlCreate;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.listview_demo);
		Log.e("ListView演示", "初始化成功。。。");
		 list=(ListView)this.findViewById(R.id.lvSource);
		 sqlCreate=new SqlLiteCreateDateBase(this) {
		};
		try {
			Cursor  c=sqlCreate.getReadableDatabase().rawQuery("select username,userpwd from userinfo",null);
			Log.e("ListView演示", "获取数据成功");
			List<Map<String, Object>>  listSource=this.GetSource(c);
			SimpleAdapter   sa=new SimpleAdapter(this,listSource, R.layout.listviewitem, 
					new String[]{"userName","userPwd"}, new int[]{R.id.Uname,R.id.Upwd});
			list.setAdapter(sa);
		} catch (Exception e) {
			new AlertDialog.Builder(null)
			.setTitle("标题")
			.setMessage("消息:"+e.getMessage())
			.setPositiveButton("确认", null)
			.show();
		}


其实代码很简单 大家一看都明白 。最主要的就是封装解析Cursor  我把数据封装到List<Map<String, Object>> 对象里面 便于Adapter于ListView。这代码最主要的是讲解下SimpleAdapter ;android.widget.SimpleAdapter.SimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) 大家看下这个类。第二个参数主要是传数据集合,第三个参数主要穿 listView行对象。注意这个 一般情况都是一个单独的UI。千万别写到ListView里面。第四个是字段名。第五个是绑定UI上控件的名字。下面我贴出如何解析Cursor数据。

public List<Map<String, Object>> GetSource(Cursor cursor)
	{
		List<Map<String, Object>> list=new ArrayList<Map<String, Object>>();
		Map<String, Object>  m=null;
//		while(cursor.moveToNext())
//		{
		for(cursor.moveToFirst();!cursor.isAfterLast();cursor.moveToNext())
		{

			m=new HashMap<String, Object>();
			m.put("userName","账号:"+ cursor.getString(cursor.getColumnIndex("userName")));
			m.put("userPwd","密码:"+cursor.getString(cursor.getColumnIndex("userPwd")));
			list.add(m);
			
		}
		Log.e("ListView演示", "数据解析成功");
		Log.e("数据行数:", cursor.getCount()+"行");
		return list;
	}


Cursor主要有几个经常用的函数:moveToFirst(),moveToLast(),moveToNext(),moveToPosition(int position),moveToPrevious() 看字面意思大家估计也看的出来。第一个是表示光标移到第一行。最后一行、下一行、绝对定位某一行、上一行。等 具体的可去查看它的用法。都很简单。

使用 Android Cursor 的时候你必须先知道关于 Cursor 的几件事情:

使用 moveToFirst() 定位第一行。
你必须知道每一列的名称。
你必须知道每一列的数据类型。
Cursor 是一个随机的数据源。
所有的数据都是通过下标取得。 

      好了今天的ListView就讲解这些。。其实我学android主要是做产品的。主要是和硬件打交道串口通信之类的。可能是扫描条码。二维码 之类的设备。可能后期的博客会侧重于这方面。谢谢大家的关注。你的关注就是我的动力。。

 






 

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值