【问题标题】:how to put in an array some items from database?如何将数据库中的一些项目放入数组中?
【发布时间】:2011-05-30 15:38:41
【问题描述】:

在我的应用程序中,我想将数据库中的一些项目放入一个数组中。我可以看到它们,作为使用此功能的列表:

private void fillData() 
{
    c = db.fetchListId(listid);
    startManagingCursor(c);

    adapter = new SimpleCursorAdapter(this, R.layout.listproduct, c,
                                      new String[] { DbAdapter.KEY_ITEM,
                                                     DbAdapter.KEY_QUANTITY,
                                                     DbAdapter.KEY_UNITS }, 
                                      new int[] { R.id.prod1,
                                                  R.id.prod2, 
                                                  R.id.prod3 }
                                     );

    setListAdapter(adapter);
}

但我不知道如何将它们放入数组中。

有人可以帮帮我吗?

【问题讨论】:

  • 你想用数组做什么?数据库列有哪些类型?
  • 你希望它们放在什么样的数组中?您想将行转换为对象,并拥有一个 MyObject[] 数组吗?或者你想要一个多维的字符串数组?还是别的什么?
  • 我想把这个数组放在一个 EditText 中。这将是我要发送的信息,我希望看起来像这样:“洋葱 1 公斤,梨 2 公斤,..”。这是关于我要发送的购物清单。数据库列是字符串。
  • 我不知道数组应该是怎样的。
  • 这里有一个很好的例子来说明你想做的事情。查看页面底部。 dharmendrajava.blogspot.com/2011/05/…

标签: android database arrays


【解决方案1】:

我想你想做这样的事情:

private String[] getItems(<the selection params>) {
    Cursor c = db.retrieveItems(<the selection params>);
    String[] items = new String[c.getCount()];
    for (int i = 0; c.moveToNext() != null; i++) {
        String item = c.getString(c.getColumnIndexOrThrow(DbAdapter.KEY_ITEM));
        String quantity = c.getString(c.getColumnIndexOrThrow(DbAdapter.KEY_QUANTITY));
        String units = c.getString(c.getColumnIndexOrThrow(DbAdapter.KEY_UNITS));
        items[i] = item + " " + quantity + units;
    }
    c.close();
    return items;
}

我假设您的 DB 类有一个名为 retrieveItems 的方法,该方法需要一些选择参数,以便执行适当的查询。 我没有测试过代码,可能有一些拼写错误或小错误,但我希望它能指导您找到所需的解决方案。

【讨论】:

  • 感谢您的回答。我尝试了类似 previuos 的答案,它有效,但我认为这种方法也有效。
【解决方案2】:

你肯定会从遍历光标开始:

while(c.moveToNext()){
  myString = c.getString(c.getColumnIndex("MyColumnName")); // or somesuch
  array[x][y][z] = myString; // also somesuch
}

如果不了解您希望如何存储数据的更多信息,除了c.moveToNext() 之外,您无法猜测您需要什么。

更新:

好的,所以你只想将它们累积成一个字符串。尝试类似:

String theList="";
while(c.moveToNext()){
  theList += c.getString(0) + " " + c.getString(1) + c.getString(2) + "\n";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2019-06-18
    • 1970-01-01
    相关资源
    最近更新 更多