android - 如何将光标中的数据显示到 ListView 中

标签 android sqlite android-listview android-cursoradapter

我是 android 的新手,我遇到了一个问题。
这是我的主类,只需插入数据并在 Logcat 中显示数据。我想在新 Activity 中显示 ListView 中的数据。现在我不知道如何从光标获取数据并将其显示在 ListView 上。我制作了一个 view.xmlview.java 来显示数据,但我不知道如何显示该 Activity 的数据。我应该制作一个适配器类、cursoradapter 还是 flater 等(我想知道接下来的步骤)。

提前致谢:)

主类

  public class main extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        addListenerOnButton();
        database_delete();
        database_add();

    }



    public void database_add() {

     try{
        Database_handler db = new Database_handler(this);

        Log.d("Insert: ", "Inserting ..");

       db.addData(new get_set(131,"A-Lucy")) ;
       db.addData(new get_set(132,"A-kk")) ;
       db.addData(new get_set(133,"A_Tweety")) ;
       db.addData(new get_set(134,"A-Naruto")) ;
       Log.d("Reading: ", "Reading all contacts..");


    List<get_set> getSetList = db.getalldata();
        for(get_set set : getSetList){
            String log = "CODEE: " + set.getCode()  + ", Description: " + set.getDescr();
            Log.d("CODE: ", log);
        }

这是我的数据库处理程序类的一些代码,具有插入、检索数据的功能。

数据库处理程序类

public class Database_handler extends SQLiteOpenHelper {

 private static final int DATABASE_Version = 1;
private static final String DATABASE_Name = "android_db";
private static final String TABLE_Name = "all_data";

private static final String Column_Name_code = "code";
private static final String Column_name_desc = "description";
private SQLiteDatabase db;

Database_handler(Context cont){
    super(cont,DATABASE_Name,null,DATABASE_Version);
}

@Override
public void onCreate(SQLiteDatabase db) {

    String CREATE_TABLE_ANDRO = " CREATE TABLE " +  TABLE_Name + "(" + Column_Name_code + " INTEGER PRIMARY KEY , "
            + Column_name_desc + " TEXT )";
    db.execSQL(CREATE_TABLE_ANDRO);
}

@Override
public void onUpgrade(SQLiteDatabase db, int Older_version, int new_version) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_Name );
    onCreate(db);
}
//    Inserting record
    public void addData (get_set getSet){
        SQLiteDatabase db = this.getReadableDatabase();

        ContentValues cv =   new ContentValues();
        cv.put (Column_Name_code, getSet.getCode());
        cv.put(Column_name_desc, getSet.getDescr());
        db.insert(TABLE_Name,null,cv);
        db.close();
    }

     Retrieving data
    public List<get_set> getalldata(){
         List<get_set> data_list = new ArrayList<get_set>();

         String select_query = "SELECT * FROM " + TABLE_Name;

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cur = db.rawQuery(select_query,null);

        if (cur.moveToFirst()){
            do {
                get_set getsetObj = new get_set();
                getsetObj.setCode(Integer.parseInt(cur.getString(0)));
                getsetObj.setDescr(cur.getString(1));
                data_list.add(getsetObj);
            }  while (cur.moveToNext());
        }
        return data_list;
    }

最佳答案

在database_add()函数中,将数据插入数据库后,调用下一个Activity的intent。在该新 Activity 中,调用 getalldata() 函数。由于您已经从列表中返回,请按照以下教程使用 Array 适配器 ListView ,使用 ArrayList 的 String 类型。它会像一个魅力。

http://www.vogella.com/articles/AndroidListView/article.html

此外,我建议您在 AsyncTask 中包含 db.getalldata() 函数,因为您不希望主线程中有繁重的数据库事务。

关于android - 如何将光标中的数据显示到 ListView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17462854/

相关文章:

android - 列表绑定(bind)后在自定义 ListView 中设置 ImageView 的源

Android:单击ListView中的复选框时如何获取事件?

android - 在 Android 中使用 Django 用户对象

Android:是否可以向扩展 View 添加自定义属性?

java - 将 SQLite 游标中的所有行列获取到对象中

sqlite - sqlite触发器中的条件插入语句

java - 如何以编程方式将图像添加到 Android PopupMenu()?

android - 何时保存应用程序的状态

ios - 如何从 SQLite 数据库中检索值

android - Android 中的设计说明。列出 Activity 与 Activity