두 개의 sqlite 테이블 값을 보여주는 listview가 있습니다. 먼저 ArrayAdapter를 사용하여 값을 보았습니다. 모든 값이 표시되었습니다. 하지만 그들은 엉망으로 보였습니다. 그래서 간단한 어댑터를 사용하려고했습니다. hHre이 제 코드입니다.listview simple adapter를 사용하는 중에 Java.Lang.NullPointerException이 발생했습니다.
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를 사용하려고합니다. 여기
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);
과 내가 map1.put("one",productmoduledesc);
에 Java.Lang.NullpointerException
같은 오류를 얻고 여기 내 DBDatasource.java의 코드입니다. 나는 그들을 모두 고치는 법을 모른다. 도와 주셔서 감사합니다. 어떤 도움을 주시면 감사하겠습니다.
같은
을 이전 값을 덮어 줄 사람 때문에, 루프의 시작 부분에 추가 보인다? 'map1' 또는'productmoduledesc'? – John3136
'NPE'의 위치가 정확하다면'map1'은'null'입니다. 어디에서 초기화합니까? – codeMagic
아마도'DBDatasource.java' 또는'public ArrayList> getproduct1()'안에'map1'을 선언하지 않았을 것입니다. –