【问题标题】:Android SQLite query result on ListViewListView 上的 Android SQLite 查询结果
【发布时间】:2012-07-25 09:28:29
【问题描述】:

刚开始学习如何为 Android 编程,现在我有一些疑问。

我有一个 SQLite 数据库,其中包含多个表,每个表都有一些字段。

我创建了一个类来管理我的数据库,并想象其中一个函数是这样的:

public Cursor getGroupData() {
    String[] values = new String[] {_ROWID, _NAME, _AGE, _PHONE};
    Cursor c = db.query(BD_TABLE, values, null, null, null, null, null);
    return c;
}

现在我有两种情况之一。

第一种情况

例如,想要在 ListView 中显示我的查询返回的所有名称。有了这个,用户可以点击一个名字,一个新的活动将显示(想象一个包含所有用户信息的布局)

第二种情况

例如,想要在 ListView 中显示我的查询返回的所有名称。有了这个,用户可以点击一个名字并执行一个新的查询(想象一下从那个用户那里获取其他数据)。查询将导致返回各种数据,我再次希望在 ListView 中显示一些字段(例如地址)。现在,如果用户点击地址,就会出现一个新的活动(例如一个包含一些地址信息的布局)。

在这两种情况下,虽然我只是选择名称或地址,但 SQLite 返回的所有数据都必须可用,例如,在第一种情况下,我选择一个名称,它将显示在布局上,联系信息之类的东西,但查询、年龄和电话的结果也必须可用。

现在我正在做类似的事情:

Cursor values = db.getGroupData();
// Now I'm thinking in putting some code to iterate over the cursor and put what I want to display on my listview on a string array

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values_I_what_to_show);
setListAdapter(adapter);

问题在于我将数据放在字符串数组中,但需要查询返回的所有数据。

你能给我指个方向吗?

问候,

【问题讨论】:

  • 我会建议使用 CursorAdapter 而不是 ArrayAdapter
  • 这不是已弃用吗?试图理解 CursorLoader 但没有能力

标签: android sqlite listview


【解决方案1】:

试试这个:

 Cursor cursor =db.getGroupData();
 ArrayList<MyData> listData = new ArrayList<MyData>();
 while (cursor.moveToNext()) {
        MyData temp = new MyData();
        temp.id = cursor.getInt(0);
        temp.name = cursor.getString(1);
        temp.age= cursor.getInt(2);
        temp.phone= cursor.getInt(3);
        listData .add(temp);
                    temp =null;
    }
cursor.close();
MyAdapter myAdapter = new MyAdapter(this,
            R.layout.list_item, listData); //use custom adapter
listView.setAdapter(myAdapter);

声明 MyData 类:

  private class MyData{
   int id ;
   String name;
   int age;
   int phone;
 }

MyAdapter 类:

private class MyAdapter extends ArrayAdapter<projData> {
    private ArrayList<MyData> items;
    private Context context;

    public MyAdapter(Context context, int textViewResourceId,
            ArrayList<MyData> items) {
        super(context, textViewResourceId, items);
        this.context = context;
        this.items = items;
      }

    public View getView(final int position, View convertView,
            ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.list_item, null);
        }
    //here getview code as per ur req 
        }
    return view;
    }
}

【讨论】:

  • 谢谢,但不明白什么是 MyAdapter。它是在哪里定义的?
  • 谢谢。以其他方式管理,但将来会很有用
猜你喜欢
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多