这是getall()
类
DataBaseHelper
方法
public ArrayList<String> getAll(){
ArrayList<String> listUsers = new ArrayList<String>();
SQLiteDatabase db = this.getWritableDatabase();
Cursor c;
try {
c = db.rawQuery("SELECT * FROM bank" , null);
if(c == null) return null;
String name;
c.moveToFirst();
do {
name = c.getString(1);
listUsers.add(name);
} while (c.moveToNext());
c.close();
} catch (Exception e) {
Log.e("blushmaq", e.getMessage());
}
db.close();
return listUsers;
}
这是我要用getall()
DataBaseHelper
方法填充记录的其他类
public class BankInfo extends ActionBarActivity {
private Toolbar toolbar;
Button searchButton;
DataBaseHelper myDbHelper = new DataBaseHelper(this);
TextView sample;
AutoCompleteTextView t1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bank_info);
sample = (TextView) findViewById(R.id.sampleTextView);
searchButton = (Button) findViewById(R.id.searchButton);
searchButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new DBOperations().execute();
}
});
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
DBOperations.execute(true);
try {
myDbHelper.createDataBase();
} catch (IOException e) {
e.printStackTrace();
}
}
private class DBOperations extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
return params[0];
}
@Override
protected void onPostExecute(String s) {
ArrayList<String> brands = myDbHelper.getAll();
t1 = (AutoCompleteTextView) findViewById(R.id.bank_name);
if(brands != null){
ArrayAdapter<String> adapter=new ArrayAdapter<String>(BankInfo.this,android.R.layout.simple_dropdown_item_1line,brands);
t1.setThreshold(1);
t1.setAdapter(adapter);
}
sample.setText(s);
myDbHelper.close();
}
}
我收到错误ArrayIndexOutofBoundException Length=0 Index=0
答案 0 :(得分:0)
您的数据库似乎没有任何值,或者您没有正确声明任何数组。 并使用brand.size()&gt; 0检查条件“if(brands!= null)”。
答案 1 :(得分:0)
重新安装该应用。
原因是,
2.安装应用程序。
3.在数据库中进行任何更改
此时数据库未更新。
这样做。
只需使用onUpgrade(作为覆盖)方法,就可以将数据库升级放在那里。这样,当已经安装了应用程序时,现有数据都不会被吹走。
并确保你不要像现在一样放弃桌子:
db.execSQL("DROP TABLE IF EXISTS bank");
如果你不想这样做。
卸载应用并重新安装
参考How to Update Database changes to already Installed Application