* 注意 列名 必须指定为_id 如果你的数据的主键id 不是以_id命名 必须在查询的时候 指定 别名为_id 否则会报异常信息 */ // SimpleCursorAdapter ada = new SimpleCursorAdapter(this, R.layout.person, cursor, // new String[]{"_id", "name", "age"}, new int[]{R.id.personid, R.id.name, R.id.age}); //绑定适配器 // listview.setAdapter(ada); } } package it.date; import it.bean.Person; import it.service.PersonService; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import android.app.Activity; 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.ListView; import android.widget.SimpleAdapter; import android.widget.SimpleCursorAdapter; import android.widget.Toast; public class DataActivity extends Activity { private static final String TAG="DataActivity"; private ListView listview; private PersonService personservice; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //获取ListView listview=(ListView)this.findViewById(R.id.listview); //获取数据库德数据 personservice=new PersonService(this); /** *方法一 SimpleAdapter 适配器 绑定的参数数据是list对象 比较?嗦 */ List persons=personservice.getdatePerson(9, 20); //绑定数据 设置适配器 List> list=new ArrayList>(); /** * 适配器有 ArrayAdapter T 可以是String Integer * SimpleAdapter,SimpleCursorAdapter */ HashMap hs=new HashMap(); hs.put("personid", "编号"); hs.put("name", "名称"); hs.put("age", "年龄"); list.add(hs); for(Person person:persons){ HashMap map=new HashMap(); map.put("personid", String.valueOf(person.getPersonId())); map.put("name", person.getName()); /** * 参数一 上下文信息 * 参数二 加载的视图界面文件 * 参数三 游标数据 * 参数四 数据目录 * 参数五 对应的数据值对应的id * 表示把参数五对应的字段 参数四绑定起来 * 注意 列名 必须指定为_id 如果你的数据的主键id 不是以_id命名 必须在查询的时候 指定 别名为_id 否则会报异常信息 */ // SimpleCursorAdapter ada = new SimpleCursorAdapter(this, R.layout.person, cursor, // new String[]{"_id", "name", "age"}, new int[]{R.id.personid, R.id.name, R.id.age}); //绑定适配器 // listview.setAdapter(ada); } } ok 到这里就全部结束了 大家只要看懂了源代码 就完全明白了sqlite这种嵌入式的sql了 map.put("age", String.valueOf(person.getAge())); list.add(map); } /** * 定义一个适配器 参数一 上下文信息 当前的上下文信息 是当前的类 * 参数二 加载的值 * 参数三 加载的视图界面文件 * 参数四 加载的目录 这个目录 是根据键值去取的值 在上面已经设置好了这个键值对 * 参数五 加载的数据对应的属性 */ SimpleAdapter adapter=new SimpleAdapter(DataActivity.this, list, R.layout.person,new String[]{"personid", "name","age"}, new int[]{R.id.personid,R.id.name,R.id.age}); //给这个ListView设置初始的适配器 listview.setAdapter(adapter); // 为ListView添加事件 listview.setOnItemClickListener(new OnItemClickListener() { /** * 参数一 表示 点击的 listview * 参数二 表示点击的最外层的那个元素 * 说明 int position, long id 是所在行的id */ @Override public void onItemClick(AdapterView parent, View view, int position, long id) { ListView listView = (ListView)parent; //获取所在行的数据 position和id都表示选择的item数据 HashMap itemData = (HashMap)listView.getItemAtPosition(position); String personid = itemData.get("personid"); String name = itemData.get("name"); String age = itemData.get("age"); //输出 01-17 14:54:47.919: INFO/DataActivity(9280): //className=android.widget.RelativeLayout Log.i(TAG, "className="+ view.getClass().getName()); Log.i(TAG, "personid="+ personid+ "name="+name + "age"+ age); Log.i(TAG, "result="+ (position==id)); //trues Log.i(TAG, "id="+id); Log.i("TAG", "position="+position); Toast.makeText(DataActivity.this, name.toString(), 1).show(); } }); /** * 方法二 获取 值 * 推荐使用方法二去设置适配器 获取数据的值 这样会更合理 * 绑定的数据是游标形式 但是主键id 必须以_id命名 如果不是 可以在查询数据的时候设置别名 并且绑定的参数必须是_id * 否则会报异常信息 */ // Cursor cursor = personservice.getdateRawPerson(0, 10); |







