2014-03-03 1 views
0

두 개의 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의 코드입니다. 나는 그들을 모두 고치는 법을 모른다. 도와 주셔서 감사합니다. 어떤 도움을 주시면 감사하겠습니다.

+0

같은

을 이전 값을 덮어 줄 사람 때문에, 루프의 시작 부분에 추가 보인다? 'map1' 또는'productmoduledesc'? – John3136

+1

'NPE'의 위치가 정확하다면'map1'은'null'입니다. 어디에서 초기화합니까? – codeMagic

+0

아마도'DBDatasource.java' 또는'public ArrayList > getproduct1()'안에'map1'을 선언하지 않았을 것입니다. –

답변

0

는 MAP1을 설정하지처럼 당신이 널 (null) 이것은 무엇

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

나를 기억해 주셔서 고마워. – WardaLyn

관련 문제