在xml中的ListView,将Adapter设置为

时间:2011-07-28 15:32:32

标签: java android listview adapter

我有以下代码:

public class ShowActivity extends ListActivity implements OnItemClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {       
        super.onCreate(savedInstanceState);
 //       setContentView(R.layout.show_list);

        ListView lv = getListView();

        String[] projection = new String[]{
                BaseColumns._ID,
                DepotTableMetaData.ITEM_NAME,
                DepotTableMetaData.ITEM_AMOUNT,
                DepotTableMetaData.ITEM_UNIT,
                DepotTableMetaData.ITEM_PPU,
                DepotTableMetaData.ITEM_TOTAL,
                DepotTableMetaData.ITEM_COMMENT};

        Cursor c = managedQuery(ContentProviderMetaData.DepotTableMetaData.CONTENT_URI, projection, null, null, ContentProviderMetaData.DepotTableMetaData.DEFAULT_SORT_ORDER);
        String[] columns = new String[]{BaseColumns._ID,ContentProviderMetaData.DepotTableMetaData.ITEM_NAME, ContentProviderMetaData.DepotTableMetaData.ITEM_AMOUNT, ContentProviderMetaData.DepotTableMetaData.ITEM_UNIT, ContentProviderMetaData.DepotTableMetaData.ITEM_PPU, ContentProviderMetaData.DepotTableMetaData.ITEM_TOTAL, ContentProviderMetaData.DepotTableMetaData.ITEM_COMMENT};
        int[] to = new int[]{R.id.lname,R.id.lamount,R.id.lunit,R.id.lppu,R.id.ltotal,R.id.lcomment};
        Log.d("ShowActivity","Cursor, columns, to set - now setting adapter");
        SimpleCursorAdapter simpleadapter = new SimpleCursorAdapter(this,R.layout.list_entry, c, columns, to);
     //   ListView lv = (ListView)findViewById(R.id.ListView);
        this.setListAdapter(simpleadapter);

        lv.setOnItemClickListener(this);
    //    intentCheck();
    }

它工作正常,但正如你在我的评论中看到的那样,我不想通过getListView()创建listview,我想做一个通常的setContentView(R.Layout .---)并填充一个Listview,在那里定义。但是我所看到的所有教程都是这样做的,我不知道如何根据我的意愿改变它。

我的layout-xml如何看起来像?我如何“告诉他使用它”? 提前谢谢。

3 个答案:

答案 0 :(得分:4)

你可以直接使用setContentView(R.layout.main);在ListActivity上,只要你在xml上定义一个带有android:list id的listView:

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

            />

从ListActivity

直接设置适配器调用setListAdapter

答案 1 :(得分:1)

不要将ListActivity用作基类,扩展Activity,将内容设置为布局,获取对扩展ListView(findViewById(...))的引用,然后处理设置适配器的方式。

答案 2 :(得分:0)

ListView lv = (ListView)findViewById(android.R.id.list);

.xml中无需更改