如何在没有ListActivity的情况下创建ListView

时间:2012-02-04 00:50:53

标签: java android

有人可以告诉我如何在不使用ListActivity的情况下创建ListView?

我需要在布局中添加其他几个视图,并且我希望ListView没有完全占用布局。它必须是布局的一部分,而不是整个布局。我想创建一个正常的Activity。

代码段:

    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.savings);

        //...
        ListView lvPoupanca = (ListView)this.findViewById(R.id.lvPoupanca);

        // the adapter
        TestRepository repo = new TestRepository(this);

        Cursor c = repo.getCursor();

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list_item, c, new String[]{"Nome", "ValorAtual"}, new int[] {R.id.tvNome, R.id.tvValorTotal});
        lvPoupancas.setAdapter(adapter);
    // ...

}

修改

saving.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/lvPoupancas"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        >

    </ListView>

</LinearLayout>
希望有人可以帮助我。

感谢并抱歉我的英语不好。

3 个答案:

答案 0 :(得分:3)

与任何活动中的任何其他视图一样......

ListView l = new ListView(this); 
// OR
ListView l = (ListView) findViewById(R.id...);
...
l.setAdapter(...);
// If using first way: setContentView(l);

例如

答案 1 :(得分:2)

然后不要扩展ListActivity。扩展活动,并在onCreate()中根据您的要求添加以下代码。

    setContentView(R.layout.ur_xml);
    Listview list = (ListView)findViewById(R.id.lvPoupancas);
    list.setAdapter(your Adapter);

答案 2 :(得分:2)

之前我回答过类似的问题。但那是在不同的背景下。所以,我在这里提供一些参考代码。它可以帮助您解决问题。

public class ListandtextActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final String [] str = {"ONE","TWO","THREE"};
        final ListView lv = (ListView) findViewById(R.id.listView1);
        final TextView tv = (TextView)findViewById(R.id.tv1);
        ArrayAdapter<Object> adapt = new ArrayAdapter<Object>(getApplicationContext(), android.R.layout.simple_list_item_1, str); 
        lv.setAdapter(adapt);
        lv.setOnItemClickListener(new OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                tv.setText("You Clicked Something");
            }
        });
    }
}

XML是

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <ListView
        android:id="@+id/listView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1" >
    </ListView>
    <TextView
        android:id="@+id/tv1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" android:textSize="20dip"/>
</LinearLayout>

顺便说一下,在提问之前,尽可能多地收集其他人的信息来帮助你。如果它不起作用,最好将错误日志放在问题中,而不是仅仅说它不起作用。