使用listview简单适配器时发生Java.Lang.NullPointerException

使用listview简单适配器时发生Java.Lang.NullPointerException,java,android,android-listview,Java,Android,Android Listview,我有一个listview,它显示了两个sqlite表的值。首先,我尝试使用ArrayAdapter查看它们,并显示了所有值。但它们看起来很凌乱,所以我尝试使用一个简单的适配器。hhr是我的代码 for(int i=0; i<= promo.size();i++){ ProductModulePromo b =dataSource.getproductmodulepromo(moduleid); productmoduledesc = b.getProductmodulede

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

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

我在
map1.put(“one”,productmoduledesc)上得到一个错误,名为
Java.Lang.NullpointerException
。我不知道怎么把它们都修好。谢谢你的帮助。任何帮助都将不胜感激。

似乎您从未设置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());
...
。。。
做{
map1=newHashMap();//添加
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.放置(“一”,productmoduledesc);
map1.put(“两个”,产品类型);
map1.put(“三”,productpromo);
促销添加(map1);
}while(cursor.moveToNext());
...

什么是空值
map1
productmoduledesc
?如果关于
NPE
发生的位置正确,则
map1
null
。您在哪里初始化它?可能您没有在
DBDatasource.java
public ArrayList getproduct1()
@John3136中声明
map1
,我检测不到在哪里出现空值。.ohhh我在DBDatasource.java上用privat初始化了它
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);
...
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());
...