如何实现一个数据库填充ListView到另一个xml创建的ListView?

时间:2012-02-26 20:59:43

标签: android database sqlite android-listview

我创建了一个数据库,其中包含我放入ListView的数据。由于它是以编程方式创建的,因此没有包含此ListView的xml文件。代码:

public class hornot extends Application{

  public static final String KEY_ROWID = "_id";
  public static final String KEY_NAME = "persons_name";
  public static final String KEY_HOTNESS = "persons_hotness";
  public static final String DATABASE_NAME = "HotOrNotdb";
  private static final String DATABASE_TABLE = "peopleTable";
  private static final int DATABASE_VERSION = 1;

  private DbHelper ourHelper;
  private final Context ourContext;
  private SQLiteDatabase ourDatabase;

  private static class DbHelper extends SQLiteOpenHelper {
  public DbHelper(Context context) {
  super (context, DATABASE_NAME, null, DATABASE_VERSION);
  }

  @Override
  public void onCreate(SQLiteDatabase db) {
  db.execSQL("CREATE TABLE " + DATABASE_TABLE + " (" + 
   KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
   KEY_NAME + " TEXT NOT NULL, " +
   KEY_HOTNESS + " TEXT NOT NULL);"
   );

  }
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE);
  onCreate(db);
  }

   }
 public hornot(Context c) {
  ourContext = c;
  }

 public hornot open() throws SQLException{ //ez a throws kell az SQLiteExample.java try részhez
  ourHelper = new DbHelper(ourContext);
  ourDatabase = ourHelper.getWritableDatabase();
  return this;
  }

这就是我将这些项目放入ListView

的方式
 ListView lv;
  ArrayList<String> todoItems = new ArrayList<String>();
 ArrayList<String> todoItems2 = new ArrayList<String>();

  @Override
  protected void onCreate(Bundle savedInstanceState){
  super.onCreate(savedInstanceState);
  setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, todoItems));

   final ListView lv = getListView();
   lv.setTextFilterEnabled(true);
  final hornot info = new hornot(this);
  info.open();

  Cursor c = info.getAllTitles();
  if (c.moveToFirst())
        {
        do{
                 todoItems.add(c.getString(0) + " " + c.getString(1) + " " + c.getString(2));
         }while (c.moveToNext());
       }
            if (todoItems.size() > 0)
            {
        lv.setAdapter(new ArrayAdapter<String>(sqview.this,android.R.layout.simple_list_item_1, todoItems));
            }

我创建了一个xml,我想将以编程方式创建的ListView放入另一个ListView(标识为listplus):

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical" android:layout_width="fill_parent"
  android:layout_height="fill_parent">
  <Button android:text="Button" android:id="@+id/b1"
  android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
  <Button android:text="Button" android:id="@+id/b2"
  android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
  <ListView android:id="@+id/listplus" android:layout_height="wrap_content"
  android:layout_width="fill_parent"><;/ListView>
</LinearLayout>

我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

我认为你只想要一个带有自定义布局的ListActivity。现在你使用ListActivity(默认情况下只显示一个完整的屏幕列表),如果你想要列表之外的其他元素(按钮,图像等)将内容视图设置为xml布局。如果您将内容视图设置为自定义布局,那么必须拥有标识为ListView的{​​{1}},以便您的"@android:id/list"知道绑定的位置数据。因此,如果您要使用您发布的布局,请对其进行修改并将所需的ListView添加到列表中:

id

然后在您当前使用的<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:text="Button" android:id="@+id/b1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <Button android:text="Button" android:id="@+id/b2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <ListView android:id="@android:id/list" android:layout_height="wrap_content" android:layout_width="fill_parent"></ListView> </LinearLayout> 中添加以下行:

ListActivity