Android SQLite:ListView不显示数据库中的项目

时间:2012-03-01 16:54:41

标签: android database sqlite listview android-cursoradapter

我已经通过自己的程序创建了一个数据库,并且我已经SQLite Database Browser进行了检查,以确保该数据库中有数据。之后,我在onCreate(下面的代码)中添加了一些代码,以便在ListView

中显示这些数据

在下面的数据中,我确信每个组件(ListView和CursorAdapter)都正常工作(因为我在将它们放在一起之前测试了每个组件)并且SQLiteOpenHandler也正常工作,因为我可以使用这个类将数据写入数据库。但是,当我嵌入SQLiteOpenHandler时,出了点问题。我想我错过了一些显示数据而不是代码错误的行。

这是我的代码:

 public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);  //in this `main layout` I have put `ListView` in

            //DatabaseHelper: a class extends from `SQLiteOpenHandler`
            databaseHelper = new DatabaseHelper(this);      

            ListView listView = (ListView) findViewById(R.id.times_list); //layout for `ListView`
            //TimeTrackerAdapter: a class extends from `CursorAdapter` 
            timeTrackerAdapter = new TimeTrackerAdapter(this, databaseHelper.getAllTimeRecord());
//getallTimeRecord() method: return a cursor of whole data in database
            listView.setAdapter(timeTrackerAdapter);     
        }

请给我一个帮助。

谢谢:)

@Edit:我的TimeTrackerAdapter课程,来自CursorAdapter

public class TimeTrackerAdapter  extends CursorAdapter{

    public TimeTrackerAdapter(Context context, Cursor cursor){  
        super(context, cursor);
    }   

    @Override
    public void bindView(View view, Context context, Cursor cursor) {
        TextView nameTextView = (TextView) view.findViewById(R.id.time_view);  
        //time_view: just a layout to display "time"
        nameTextView.setText(cursor.getString(1));      
        TextView valueTextView = (TextView) view.findViewById(R.id.notes_view);
        valueTextView.setText(cursor.getString(2));
        //notes_view: just a layout to display "notes"
    }

    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View view = inflater.inflate(R.layout.time_list_item, parent, false);
        return view;
    }
}

@Edit 2: 在这里我的方法getAllTimeRecord()

public Cursor getAllTimeRecord(){
        return database.rawQuery("select * from "+TABLE_NAME, null);

    } 

如果那个方法有问题,我认为是SQLite Query。但是,我不确定如何检查它:((运行时,Logcat不会对该查询产生错误)。

1 个答案:

答案 0 :(得分:0)

你应该放下你的TimeTrackerAdapter部分


public int getCount() {
    return times.size();
}

public Object getItem(int index) {
    return getItem(index);
}

public long getItemId(int index) {
    return index;
}