java是将Android游标(sqlite)提取到数组中以在AlertDialog中使用的最有效的方法。建设者
我想知道从安卓 SQLite数据库游标中提取数据到数组中的最有效方法。 问题是当我使用列表对话框(AlertDialog.Builder.setItems)时,项目是set from an array。要生成数组,我需要遍历光标的每一行,并根据这些值重新生成新的数组,并且需要非常长的时间来处理
<>也许我错过了一些类似C++的STD::向量或Python的列表,我可以在这里快速推/附加和弹出。我想知道人们是如何处理列表对话框的,它从数据库中获取数据并保持快速处理。谢谢//-- Draw all list of base account
dbv_accounts = db.rawQuery("SELECT * FROM accounts WHERE type='BASE'",null);
CharSequence[] accounts_list = {};
if (dbv_accounts.getCount()>0)
while (dbv_accounts.moveToNext()) //-- cursor starts from -1
{
CharSequence[] new_accountl = new CharSequence[accounts_list.length + 1];
System.arraycopy(accounts_list, 0, new_accountl, 0, accounts_list.length);
new_accountl[accounts_list.length] = dbv_accounts.getString(dbv_accounts.getColumnIndex("name"));
accounts_list = new_accountl;
}
db.close();
final CharSequence[] finalAccounts_list = accounts_list;
bt_Cba_Baseaccount.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(ChangebaseaccountActivity.this);
builder.setTitle("Pick Base Account Name");
builder.setItems(
finalAccounts_list,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int item){
bt_Cba_Baseaccount.setText(finalAccounts_list[item]);
String ba = finalAccounts_list[item].toString();
}
}
);
builder.show();
}
}
);
# 1 楼答案
对于寻找解决方案的人来说,简单的解决方案是使用ArrayList并将其转换为数组。它比为每行光标读取生成新数组快得多
然后将ArrayList转换为一个数组
阵列已准备好在AlertDialog中使用。建设者设置项