0

Androidでカスタムリストビューを作成したいときに問題があります。

MyListView クラス:

public class MyListView extends ArrayAdapter<Quotes> {

    Context context;
    int resource ;
    private final List<Quotes> items;
    public MyListView(Context context,int resourse , List<Quotes> items){
        super(context, resourse,items);
        this.resource = resourse;
        this.items = items;
    }

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

    try {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.list_item, null);
        }
        Quotes item = items.get(position);
        TextView text = (TextView) v.findViewById(R.id.listItemText);
        TextView id = (TextView) v.findViewById(R.id.listItemId);
        text.setText(item.getText());
        id.setText(item.getID());
    } catch (NullPointerException e) {
        e.printStackTrace();
        Log.e("Error Saeed", e.getMessage());
    }
    return convertView;
}


}

および onCreate メソッドの MainActivity で:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DatabaseHandler db = new DatabaseHandler(this);
        final ListView lv = (ListView)findViewById(R.id.listView1);
        MyListView adapter = new MyListView(this, R.layout.list_item, db.getAllQuotes());
        lv.setAdapter(adapter);       
    }

DatabaseHandler クラス

public class DatabaseHandler extends SQLiteOpenHelper {

....
....

        public List<Quotes> getAllQuotes(){
        SQLiteDatabase db = getWritableDatabase();
        Cursor c = db.rawQuery("select * from "+TABLE_QUOTE,null);
        List<Quotes> quotes = new ArrayList<Quotes>();
        if(c.moveToFirst()){
            do{
                Quotes q = new Quotes(Integer.parseInt(c.getString(0)),c.getString(1),c.getString(2));
                quotes.add(q);
            }while(c.moveToNext());
        }
        db.close();
        c.close();
        return quotes;
    }

...
...
}

アプリを実行すると、エラーが発生して閉じます。

このリンクで log.txt を見ることができます

問題はどこだ?

4

1 に答える 1

1

isのときにメソッドで をNullPointerException初期化しないため、おそらく aがあります。ViewHoldergetViewconvertViewnull

ViewHolder holder = null;
Quotes item = items.get(position);
if(convertView == null){
        convertView = inflater.inflate(R.layout.list_item, null);
        holder = new ViewHolder();
        holder.txtTitle = (TextView) convertView.findViewById(R.id.listItemText);
        holder.txtID = (TextView)convertView.findViewById(R.id.listItemId);
        convertView.setTag(holder); 
} else {
        holder = (ViewHolder) convertView.getTag();
}

コードに他の問題がある可能性があります。

于 2012-09-23T13:48:09.590 に答える