【问题标题】:Linking listview to sqlite database将listview链接到sqlite数据库
【发布时间】:2012-08-14 21:37:49
【问题描述】:

这是我正在尝试做的事情,并希望获得一些关于最佳方法的建议:

  • 拥有一个包含单词的数据库,以及与该单词关联的图像文件的名称。
  • 数据库中的单词将显示在列表视图中
  • 当单词被选中时,新的 Activity 将开始在图像视图中显示单词和图像。

最好将术语存储在一个数组中,然后从这个数组中填充列表视图,然后从数据库 onitemclick 中提取?或者可以用数据库中的术语填充列表视图吗?

如果文件名存储在db中,android是否能够显示图像?

【问题讨论】:

  • 如果你有少量的条目,那么加载内存中的所有数据比一直查询数据库要快得多。但是,如果您有很多条目,那么明智的做法是将数据保存在数据库中,并仅加载和显示其中的一部分。

标签: android sqlite listview


【解决方案1】:

实现您正在寻找的最佳方法是将术语和图像路径存储在数据库中,然后使用该路径从您放入的任何位置获取图像。

图像可以存储在数据库中,但普遍的共识是,最好将图像存储在数据库之外,并将该图像的路径存储在数据库中。

然后,您的数据库可以像三列一样简单...“_id”、“term”和“term_image”。

您可以执行一个简单的查询来一次获取所有信息(因此只查询数据库一次)。

然后使用该查询返回的光标填充您的术语列表,并使用onListItemClick 启动一个新活动以使用列表中的路径显示关联的图像,该路径与列表中的术语在同一条记录中.

查询获取数据:

public Cursor fetchAllTerms() {
    return mDb.query(TERMS_TABLE, new String[] { "_id", "term", "term_img" }, null, null, null, null, null);
}

在您的列表中使用它:

    mTermCursor = mDbHelper.fetchAllTerms();
    getActivity().startManagingCursor(mTermCursor);

    String[] from = new String[] { YourDBClass.term };
    int[] to = new int[] { android.R.id.Text1 };
    SimpleCursorAdapter ranks = new SimpleCursorAdapter(getActivity(),
            android.R.layout.simple_list_item_1, mRankCursor, from, to);
    setListAdapter(ranks);

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
     String imagePath = mTermCursor.getString(mTermCursor.getColumnIndexOrThrow("term");
     // code to start your new activity and put the image path into the bundle to be passed
}

【讨论】:

  • 您能否提供更多关于您描述的方法的详细信息,例如使用简单查询?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-05
  • 2017-03-21
  • 1970-01-01
  • 2017-03-20
相关资源
最近更新 更多