1

サー、私は BaseAdapter を使用して sqlite データベースから listview のコードを書いています。私はたくさん検索しましたが、私が書いたようなコードを見つけることができません。だから私を助けてください。テーブルMONEYがあり、4つのフィールドID、FIRSTNAME、MONEY、DESCRIPTIONがあります。この行でエラーが発生しました: text1.setText(list1[position]);

package com.anurag.main;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class Money extends Activity {
ArrayList list1;
TextView text1, text2, text3, text4;
ImageView iv;
ListView mList;
SQLiteDatabase db;
private static String DBNAME = "MainDB.db";

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.money);
    mList = (ListView) findViewById(R.id.mList);
    list1 = new ArrayList();
    try {
        db = openOrCreateDatabase(DBNAME, MODE_WORLD_READABLE, null);
        Cursor c = db.rawQuery("select * from MONEY", null);
        while (c.moveToNext()) {
            list1.add(c.getString(1));
        }
    } catch (Exception e) {
        // TODO: handle exception
    }
    mList.setAdapter(new MyArrayAdapter(getApplicationContext()));

}

class MyArrayAdapter extends BaseAdapter {
    Context context;

    public MyArrayAdapter(Context c) {
        context = c;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        View v = inflater.inflate(R.layout.custom1, null);
        text1 = (TextView) v.findViewById(R.id.text1);
        text1.setText(list1[position]);**// Problem in this line**
        // TODO Auto-generated method stub
        return null;
    }

}
}

実際には、データベースからデータを入力していて、リストビューに表示したいと考えています。間違ったコードを書いている場合はお知らせください。ありがとう

4

2 に答える 2

2

行を変更する

View v = inflater.inflate(R.layout.custom1, null);

convertView = inflater.inflate(R.layout.custom1, null);

return nullそしてに変更return convertView

そう:

 @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.custom1, null);
        text1 = (TextView) v.findViewById(R.id.text1);
        text1.setText(list1[position]);**// Problem in this line**
        // TODO Auto-generated method stub
        return convertView;
    }

また、配列のサイズを返すように getCount メソッドを変更します。

@Override
    public int getCount() {
        // TODO Auto-generated method stub
        return list1.size();
    }
于 2012-10-10T11:52:56.860 に答える
1

あなたはあなたを変えようとしましたか

text1.setText(list1[position]);

text1.setText(list1.get(position));
于 2012-10-10T11:41:40.477 に答える