简体   繁体   中英

Java.Lang.NullPointerException while using listview simple adapter

I have a listview that shows two sqlite tables' values. First I tried to use ArrayAdapter to view them and all values were shown. But they looked messy, so I tried using a simple adapter. hHre is my code.

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);}

promo is my arraylist<productmodulepromo>() . when i try to compile those code. all values that shown are same. so i try to change with this code on datasource.java and use those arraylist on formpromo.java. here is my DBDatasource.java's code:

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;
  }

here is my 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);

and I am getting an error as Java.Lang.NullpointerException on map1.put("one",productmoduledesc); . I have no idea how to fix them all. Thanks for help. any help will be appreciated.

Seems like you never set map1, add it to the beginning of the loop, because else you'd overwrite the old values

like this

...
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());
...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM