我在以下情况下需要有关IndexOutOfBoundsException
错误的帮助。我有两个类,一个是扩展SQLiteOpenHelper
的数据库类,另一个是将从数据库类中查询的值与微调器上进行的某些选择进行比较。
因此,在数据库类中,我有两种方法可以执行数据库查询:getInventory()
和getStock()
。getInventory()
方法首先查询db,然后将游标值添加到arraylist checkInventory
。然后getStock()
设置arraylist的返回方法。
List<String> checkInventory = new ArrayList<>();
public void getInventory(int primaryKey) {
// Select All Query
String selectQuery = "Select * FROM " + TABLE_PRODUCT + " WHERE " + PRODUCER_FK + " = \"" + primaryKey + "\"";
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
cursor.moveToFirst();
while (cursor.isAfterLast() == false) {
String productName = cursor.getString(1);
String productQuantity = String.valueOf(cursor.getInt(3));
String productPrice = String.valueOf(cursor.getInt(2));
checkInventory.add(productName);
checkInventory.add(productQuantity);
checkInventory.add(productPrice);
cursor.moveToNext();
}
}
public String getStock(int pos) {
return checkInventory.get(pos);
}
然后在
ProductInventory
类中有两个微调器:producer
和product
微调器。我想将product
微调器上的值与数据库类中productName
数组列表中存储的checkInventory
进行比较,单击按钮即可。如果值匹配,则应在xml文件中显示产品价格,产品数量以及生产者和产品微调器的值。这是课程:// Adding click listener to Get button.
public void addListenerOnGet() {
getBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// database handler
FISP_SQLiteDB db = new FISP_SQLiteDB(getApplicationContext());
String name = db.getStock(0);
String quantity = db.getStock(1);
String price = db.getStock(2);
if (name==product.getSelectedItem()){
Intent i = new Intent(ProductInventory.this, Product_Details.class);
i.putExtra("ProducerValue", producer.getSelectedItem().toString());
i.putExtra("ProductValue", product.getSelectedItem().toString());
i.putExtra("ProducerPrice", price);
i.putExtra("ProductDetails", quantity);
startActivity(i);
}
}
});
}
当然,还有另一个类可以在xml等上设置文本。但是,当我运行该应用程序时,出现一个异常:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0.
该错误指向数据库类。public String getStock(int pos) {
return checkInventory.get(pos);
}
在另一堂课中
String name = db.getStock(0);
String quantity = db.getStock(1);
String price = db.getStock(2);
我是android开发的新手,显然我做错了什么,那么有没有更好的方法呢?任何帮助将不胜感激。
最佳答案
您忘记了调用getInventory方法,因此checkInventory列表为空。