【发布时间】:2021-12-12 09:14:39
【问题描述】:
每当 ArrayAdapter 从数据库中获得所需的一切时,它都会创建每个按钮,我认为,数据库的每个位的内存位置。我说我认为是因为每次我在应用程序中来回切换页面时结构都会发生变化。我使用按钮让它工作,但该方法阻止我做其他事情,例如编辑和从数据库中删除,因为按钮本身没有所需的所有信息,因为它是一个按钮。 当我尝试使用 ArrayAdapters 时,这就是它目前所做的:
这是用于尝试创建 ArrayAdapter 的代码:
void Testing() {
DataBaseHelper databaseHelper = new DataBaseHelper(View_Products.this);
List<ProductModel> allProductsFromType = databaseHelper.GetAllProductsFromType(productType);
ArrayAdapter productArrayAdapter = new ArrayAdapter<ProductModel>(View_Products.this, android.R.layout.simple_list_item_1, allProductsFromType);
lv_products_added.setAdapter(productArrayAdapter);
lv_products_added.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Toast.makeText(View_Products.this, "Testing " + allProductsFromType.get(i).GetName(), Toast.LENGTH_SHORT).show();
}
});
}
这是数据库的代码:
public List<ProductModel> GetAllProductsFromType(String product_type) {
List<ProductModel> products = new ArrayList<>();
String queryString = "SELECT * FROM " + PRODUCT_TABLE + " WHERE " + COLUMN_PRODUCT_TYPE + " LIKE " + '\'' + product_type + '\'';
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(queryString, null);
if (cursor.moveToNext()) {
do {
int productID = cursor.getInt(0);
String productType = cursor.getString(1);
String productName = cursor.getString(2);
String productBrand = cursor.getString(3);
ProductModel newProduct = new ProductModel(productID, productName, productBrand, productType);
products.add(newProduct);
}
while (cursor.moveToNext());
}
cursor.close();
db.close();
return products;
}
关于我需要做什么才能获得理想结果的任何建议?提前致谢!
【问题讨论】:
-
参见developer.android.com/reference/android/widget/ArrayAdapter,您的问题是数组适配器通过对集合中的每个数据对象调用 Object#toString() 来创建视图。您可以覆盖 toString 方法或根据列表适配器视图指南的链接进行自定义。
标签: java android sqlite android-studio android-arrayadapter