ListActivity用来显示一个项目列表,数据来源可以是数组或者游标。 先使用xml定义一个屏幕布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="wrap_content"    android:layout_height="wrap_content"><ListView android:id="@id/android:list"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/>  <TextView android:id="@id/android:empty"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/no_notes"/>        </LinearLayout>

  • ListView的id必须是@id/android:list或者@android:id/list 。
  • TextView用来显示没有数据时的信息,id是@id/android:empty或者"@android:id/empty"。
下面是每行的布局:
<?xml version="1.0" encoding="utf-8"?><TextView android:id="@+id/text1"    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:padding="10dp"     android:textSize="16sp" />

  • 可以自己写,如上,也可以用android已经定义好的布局,比如:android.R.layout.simple_list_item_1。
  • 要设置id,数据绑定的时候会用到。
  • 可以是多个TextView,数据绑定的时候对应就可以。
数据绑定的代码:
package com.hebaijun.notepad;import android.app.ListActivity;import android.database.Cursor;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.SimpleCursorAdapter;import android.widget.TextView;public class NotepadActivity extends ListActivity {private static final String TAG = "NotepadActivity";private NoteDbAdapter mDbHelper;private Cursor mNotesCursor;    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.notepad_list);        mDbHelper = new NoteDbAdapter(this);        mDbHelper.open();        fillData();        //fillDataArray();    }    /**     * 数组方式添加List数据     */    private void fillDataArray() {final String[] DATA = new String[] {"a笔记一","b笔记二","c笔记三"};ArrayAdapter<String> notes = new ArrayAdapter<String>(this, R.layout.notes_row, DATA);setListAdapter(notes);ListView lv = getListView(); //根据键盘输入的字符在List中筛选,比如按键盘的a,会把a开头的item筛选出来显示。lv.setTextFilterEnabled(true);lv.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String textString = ((TextView)view).getText().toString();Log.v(TAG, DATA[position]);Log.v(TAG, textString);    } });}/**     * 为list添加数据,光标方式     */private void fillData() {mNotesCursor = mDbHelper.fetchAllNotes();//使用这个方法的目的是把获取的Cursor对象交给Activity管理,这样Cursor的生命周期便能和Activity自动同步,省去自己手动管理。        startManagingCursor(mNotesCursor);         String[] from = new String[] { NoteDbAdapter.KEY_TITLE };        int[] to = new int[] { R.id.text1 };                SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.notes_row, mNotesCursor, from, to);        setListAdapter(notes);}@Overrideprotected void onListItemClick(ListView l, View v, int position, long id) {// TODO Auto-generated method stubsuper.onListItemClick(l, v, position, id);Log.v(TAG, "position:"+position+",id:"+id);Cursor c = mNotesCursor;    c.moveToPosition(position);Log.v(TAG, c.getString(c.getColumnIndexOrThrow(NoteDbAdapter.KEY_TITLE)));}}

  • fillData方法是光标方式,fillDataArray方法是数组方式。
  • 响应每个item的点击有两种方式,一个是setOnItemClickListener,一个是实现onListItemClick方法。
  • onListItemClick中的l是ListView,v是TextView,position是列表的位置,从0开始,id对应的光标中row的id,在数组中id是数组的下标。

更多相关文章

  1. Android之Adapter用法总结
  2. Android之Adapter用法总结
  3. Android中的布局方式(二)
  4. 面向UDP的Android——PC双向通信(一):实现Android客户端和PC服务器
  5. android Adapter综合介绍
  6. Android(安卓)kotlin学习之----kotlin+recycleview展示数据
  7. 《Android构建MVVM》系列(一) 之 MVVM架构快速入门
  8. [置顶] Mc小冰总结的Android开发工程师面试题以及答案,android程
  9. Android(安卓)Sqlite 数据库—基础篇

随机推荐

  1. android通过更改hosts免优酷广告方法
  2. android之动态更改屏幕方向的简单例子(LA
  3. Android对移动计算的影响及产业变革
  4. 【Android UI设计与开发】第06期:底部菜单
  5. 做自己的Android ROM,屏蔽对framework中的
  6. Android手把手视频教程 | 课程简介
  7. Android API Guides---Localizing with R
  8. Android主题theme和样式style总结
  9. Android 进程和线程模型 .
  10. Adapter