Java.Lang.NullPointerException 同时使用 listview simple adapter



我有一个列表视图,显示两个sqlite表的值。首先,我尝试使用ArrayAdapter查看它们,并显示了所有值。但是它们看起来很乱,所以我尝试使用一个简单的适配器。hHre 是我的代码。

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>()。 当我尝试编译这些代码时。 显示的所有值都相同。 所以我尝试在数据源上更改此代码.java并在 Formpromo 上使用这些 arraylist.java。 这是我的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;
  }

这是我的表格促销.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());
...

最新更新