![](/img/trans.png)
[英]ListView Adapter: Unable to start activity ComponentInfo{..} : java.lang.NullPointerException
[英]Java.Lang.NullPointerException while using listview simple adapter
我有一個列表視圖,顯示兩個sqlite表的值。 首先,我嘗試使用ArrayAdapter來查看它們,並顯示所有值。 但是它們看上去很亂,所以我嘗試使用一個簡單的適配器。 這是我的代碼。
for(int i=0; i<= promo.size();i++){
ProductModulePromo b =dataSource.getproductmodulepromo(moduleid);
productmoduledesc = b.getProductmoduledesc().toString();
producttype = b.getProducttype().toString();
productpromo = b.getproductpromotion().toString();
map1.put("three",productpromo);
map1.put("two",producttype);
map1.put("one",productmoduledesc);
Globals.promo.add(map1);}
促銷是my arraylist<productmodulepromo>()
。 當我嘗試編譯這些代碼時。 顯示的所有值都相同。 因此,我嘗試使用datasource.java上的此代碼進行更改,並在formpromo.java上使用這些arraylist。 這是我的DBDatasource.java的代碼:
public ArrayList<HashMap<String, String>> getproduct1() {
ArrayList<HashMap<String, String>> promo = new ArrayList<HashMap<String, String>>();
database = dbHelper.getReadableDatabase();
Cursor cursor = database.rawQuery("select productmodule.productmoduledescription, productdetail.producttype, productdetail.productpromotion from productmodule, productdetail where productmodule.productmoduleid=productdetail.productmoduleid", null);
cursor.moveToFirst();
if (cursor.moveToFirst()) {
do {
productmoduledesc=cursor.getString(cursor.getColumnIndex(DBHelper.PRODUCT_MODULE_DESC));
producttype = cursor.getString(cursor.getColumnIndex(DBHelper.PRODUCT_TYPE));
productpromo = cursor.getString(cursor.getColumnIndex(DBHelper.PRODUCT_PROMOTION));
map1.put("one",productmoduledesc);
map1.put("two",producttype);
map1.put("three",productpromo);
promo.add(map1);
} while (cursor.moveToNext());
}
cursor.close();
return promo;
}
這是我的Formpromo.java:
dataSource = new DBDataSource(this);
dataSource.open();
promo = dataSource.getproduct1();
adapter = new SimpleAdapter(FormPromo.this, promo, R.layout.item_to,
new String[] {"one","two","three"},
new int[] {R.id.edtbrandto,R.id.edtqtyto,R.id.edtharga});
setListAdapter(adapter);
final ListView listpromo = (ListView) findViewById(android.R.id.list);
setListAdapter(adapter);
而我得到一個錯誤的Java.Lang.NullpointerException
上map1.put("one",productmoduledesc);
。 我不知道如何解決所有問題。 感謝幫助。 任何幫助將不勝感激。
似乎您從未設置過map1,請將其添加到循環的開始,因為否則您將覆蓋舊值
像這樣
...
do {
map1 = newHashMap<String, String>(); // add
productmoduledesc=cursor.getString(cursor.getColumnIndex(DBHelper.PRODUCT_MODULE_DESC));
producttype = cursor.getString(cursor.getColumnIndex(DBHelper.PRODUCT_TYPE));
productpromo = cursor.getString(cursor.getColumnIndex(DBHelper.PRODUCT_PROMOTION));
map1.put("one",productmoduledesc);
map1.put("two",producttype);
map1.put("three",productpromo);
promo.add(map1);
} while (cursor.moveToNext());
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.