2011-09-30 87 views
2

Hy!ListView中的NullPointerException

我应该从数据库中填充数据的列表视图

代码:

private void onCreateDBAndDBTabled() { 
     myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null); 
     myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DB_TABLE 
       + " (_id integer primary key autoincrement, name varchar(100), rate integer(1), eattime datetime)" 
       +";"); 
    ArrayList<Pizza> list = new ArrayList<Pizza>(); 
Cursor cursor = this.myDB.query(MY_DB_TABLE, new String[] { "name" },null,null,null,null,null,null); 
     if (cursor.moveToFirst()) { 
     do { 
      Log.e("XXX", "Courser Enter: " + cursor.getString(0)); 
      Pizza pizza = new Pizza(); 
      pizza.title= cursor.getString(0); 
      list.add(pizza); 
      } 
     while (cursor.moveToNext()); 
     } 
     if (cursor != null && !cursor.isClosed()) { 
     cursor.close(); 
     } 
     Log.e("XXX", "Count:" + list.size()); 
     Log.e("XXX", "Item[0] -->" + list.toArray()[0].toString()); 
     CustomAdapter aa = new CustomAdapter(this, R.layout.customlistitem,list); 
    Log.e("XXX", String.valueOf(aa.getCount())); 
     lv.setAdapter(aa); 
    } 

Customadapter:

public class CustomAdapter extends ArrayAdapter<Pizza>{ 

    private ArrayList<Pizza> pizzen; 

    public CustomAdapter(Context context, int textViewResourceId,ArrayList<Pizza> objects) { 
     super(context, textViewResourceId, objects); 
     this.pizzen = objects; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View v = convertView; 
     Pizza pizza = pizzen.get(position); 
     if (v == null) { 

     } 

     return v;//super.getView(position, convertView, parent); 


    } 

比萨:

public class Pizza{ 

    public String title; 
    public int rate; 
    public Date date; 
} 

错误:

09-30 08:58:38.661: ERROR/XXX(667): Courser Enter: EditText 
09-30 08:58:38.671: ERROR/XXX(667): Count:1 
09-30 08:58:38.671: ERROR/XXX(667): Item[0] -->[email protected] 
09-30 08:58:38.671: ERROR/XXX(667): 1 
09-30 08:58:38.751: ERROR/AndroidRuntime(667): Uncaught handler: thread main exiting due to uncaught exception 
09-30 08:58:38.762: ERROR/AndroidRuntime(667): java.lang.NullPointerException 
09-30 08:58:38.762: ERROR/AndroidRuntime(667):  at android.widget.AbsListView.obtainView(AbsListView.java:1276) 
09-30 08:58:38.762: ERROR/AndroidRuntime(667):  at android.widget.ListView.makeAndAddView(ListView.java:1668) 
09-30 08:58:38.762: ERROR/AndroidRuntime(667):  at android.widget.ListView.fillDown(ListView.java:637) 
09-30 08:58:38.762: ERROR/AndroidRuntime(667):  at android.widget.ListView.fillFromTop(ListView.java:694) 
09-30 08:58:38.762: ERROR/AndroidRuntime(667):  at android.widget.ListView.layoutChildren(ListView.java:1521) 
09-30 08:58:38.762: ERROR/AndroidRuntime(667):  at android.widget.AbsListView.onLayout(AbsListView.java:1113) 
09-30 08:58:38.762: ERROR/AndroidRuntime(667):  at android.view.View.layout(View.java:6830) 

错误是NullPoinerException虽然LISTSIZE为1(查看日志)

+0

,您在数据库中获取的数据???或没有什么是回报? – Hanry

回答

7

这是因为在你getView()方法你是不是充气convertView和它返回你null

getView应该是这样的一个inflatingrow.xml包含TextView.

@Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     TextView mTextView = null; 
     if (convertView == null) { 
      convertView = inflater.inflate(R.layout.row, parent, false); 
      mTextView = (TextView) convertView.findViewById(R.id.txt_list); 
      convertView.setTag(mTextView); 
     } 
     else{ 
      mTextView = (TextView) convertView.getTag(); 
     } 
     mTextView.setText(arrList.get(position)); 
     return convertView; 
    } 
+0

我在哪里得到indflater? – test123123

+0

结帐这最好的链接了解更多关于自定义适配器http://www.vogella.de/articles/AndroidListView/article.html#overview_listactivity –

+0

你救了我:)浪费了一些时间与我自己愚蠢的错字。 – alekz

相关问题