0

我在使用 ListView 显示 sqlite 数据库中的数据项时遇到问题。当我尝试单击按钮后查看数据时,它显示:

com.LocationReminder 和 Task@4053afb0

有点奇怪。

这是我的 readReminder.java

import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class readReminder extends ListActivity {
private DBReminder operasiDB;
private ArrayList<Task> daftarTugas;

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.read_task);
     operasiDB = new DBReminder(this);

     daftarTugas = operasiDB.viewAllTask();
     ArrayAdapter<Task> adapter = new ArrayAdapter<Task>(this,
         android.R.layout.simple_list_item_1, daftarTugas);

     setListAdapter(adapter);
 }
}

这是我显示数据库中所有数据的代码

public ArrayList<Task> viewAllTask() {
    openConn();
    ArrayList<Task> tugas = new ArrayList<Task>();
    Cursor curs = db.rawQuery("select * from " + TableName, null);
    if (curs.moveToFirst()) {
        do {
            Task task = new Task();
            task.setId(Integer.parseInt(curs.getString(curs.getColumnIndex(ID))));
    task.setLatitude(Integer.parseInt(curs.getString(curs.getColumnIndex(LATITUDE))));               
task.setLongitude(Integer.parseInt(curs.getString(curs.getColumnIndex(LONGITUDE)));
task.setRadius(Integer.parseInt(curs.getString(curs.getColumnIndex(RADIUS))));
task.setAlamat(curs.getString(curs.getColumnIndex(ALAMAT)));
task.setKonteks(curs.getString(curs.getColumnIndex(KONTEKS_TUGAS)));
tugas.add(task);
        } while (curs.moveToNext());
    }
    closeConn();
    return tugas;
}

在 SQLite Manager Eclipse 中,数据也与表一起出现。请帮我。谢谢...

4

3 回答 3

0

Adapter您必须通过扩展ArrayAdapter类来创建自己的。

于 2013-03-27T04:54:11.860 回答
0

如果要在列表视图中显示多个列,请使用 SimpleCursorAdapter

public Cursor viewAllTask() {
//openConn(); open your database in the activity onCreate

return db.rawQuery("select * from " + TableName, null);

//closeConn(); // close your database in the activity onDestroy
} 

更改private ArrayList<Task> daftarTugas;Cursor daftarTugas;

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.read_task);
 operasiDB = new DBReminder(this);
 operasiDB.open();

 Cursor daftarTugas = operasiDB.viewAllTask();
 String[] fromColumns = {DBReminder.RADIUS, 
                         DBReminder.ALAMAT,
                         DBReminder.KEY_KONTEKS_TUGAS};
int[] toViews = {R.id.textview_radius, 
                 R.id.textview_alamat,
                 R.id.textview_konteks_tugas};
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
                            R.layout.listview_items,
                            daftarTugas, fromColumns, toViews, 0);
        setListAdapter(adapter);
 }  

布局 XML 名称 listview_items

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<TextView
    android:id="@+id/textview_radius"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView 
    android:id="@+id/textview_alamat"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView 
    android:id="@+id/textview_konteks_tugas"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</LinearLayout>
于 2013-03-27T04:55:44.753 回答
0

默认情况下,ArrayAdaptor 类期望提供的资源 id 引用单个 TextView。您需要自定义它。

简单易用的使用 simplecursoradoptor 的方法。

于 2013-03-27T06:46:33.487 回答