无法通过使用简单的游标适配器android获取列表视图中的值?

时间:2011-12-27 10:32:52

标签: android listview simplecursoradapter

在我的Android应用程序中,我想显示从DB中检索值的列表。我使用简单的游标适配器来执行此操作,但列表视图为空。这是我的代码。我的列表视图有两行。我如何在app中使用简单的游标适配器。我做错了。请建议。 提前谢谢。

    //list.xml

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent">
        <ListView android:layout_width="fill_parent" android:id="@android:id/android:list"
        android:layout_height="fill_parent" android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"></ListView>

    </RelativeLayout>


   // textview.xml-->

<?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" android:weightSum="1">
        <TextView android:id="@+id/column1" android:background="@drawable/mid"
        android:layout_height="30dp" 
        android:layout_width="fill_parent" android:layout_weight="0.03"></TextView>
        <TextView android:layout_height="wrap_content"
        android:text="TextView" android:id="@+id/column2" android:background="@drawable/mid"
        android:layout_weight="0.03" android:layout_width="fill_parent"></TextView>


    </LinearLayout>




    public class AddFood extends ListActivity{

        public void onCreate(Bundle savedInstanceState)
    {

             super.onCreate(savedInstanceState);
             setContentView(R.layout.listxml);

          DataBaseHelper db = null;
        try {
            db = new DataBaseHelper(this);
        } catch (IOException e) {

            e.printStackTrace();
        }
           SQLiteDatabase database=  db.getReadableDatabase();
          Cursor c=database.query("food_list", new String[]{"_id","food_items"}, null, null, null,null,null);
          startManagingCursor(c);

        String[] displayfield=new String[]{"_id","food_items"};
         int[] displayViews = new int[] {R.id.column1,R.id.column2}; 

       SimpleCursorAdapter mAdapter=new SimpleCursorAdapter(getApplicationContext(),R.layout.textview, c,displayfield , displayViews);
          this.setListAdapter(mAdapter);

          c.close();   

    }

    }

1 个答案:

答案 0 :(得分:1)

对于list.xml,请使用:

<ListView android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"></ListView>

在课程档案中​​:

不要使用c.close();

并使用:

SimpleCursorAdapter mAdapter=new SimpleCursorAdapter(this,R.layout.textview, c,displayfield , displayViews);
          setListAdapter(mAdapter);