簡體   English   中英

使用ListView簡單適配器時出現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.NullpointerExceptionmap1.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM