【问题标题】:Having a custom ListView with different options to choose from拥有一个具有不同选项的自定义 ListView 可供选择
【发布时间】:2011-07-14 16:15:01
【问题描述】:

我目前正在构建一个非常类似于当今任何 android 手机附带的标准闹钟应用程序的 ListView。在应用程序中,它们有一个 ListView,每行都有不同的视图。

例如:

http://www.androidpeople.com/wp-content/uploads/2010/05/listviewwithmultiplechoice.png

http://www.talkandroid.com/android-forums/attachments/android-development-answers-tutorials-code-snippets/360d1234754310-add-edittext-backgroundtxt-child-expandable-list-screencap1.png

我希望这两个选项都在同一个 ListView 上使用复选框和可扩展视图。我试过寻找教程,但没有一个真正有帮助。

在我的代码中,我希望视图是可扩展列表视图和多选视图的组合。 做这样的事情的最好方法是什么? 这是我目前的代码。

public class AlarmList extends ListActivity {
    AlarmListItem[] items = {
            new AlarmListItem("Turn On Alarm", Alerts.class),
            new AlarmListItem("Time", Person.class),
            new AlarmListItem("Time", MTSU_Android.class),
            new AlarmListItem("Sound", Person.class),
            new AlarmListItem("Vibrate", Alerts.class),
            new AlarmListItem("Repeat", Alerts.class),
            new AlarmListItem("Volume", MTSU_Android.class),
            new AlarmListItem("BackupAlarm", Person.class)};

            @Override
            public void onCreate (Bundle icicle)
            {
                super.onCreate(icicle);
                setContentView(R.layout.main3);
                //ListView list1 = ((ListView)findViewById(R.id.ListView01));
                setListAdapter(new ArrayAdapter<AlarmListItem>(
                        this, android.R.layout.simple_list_item_1, items));
            }

            @Override
            protected void onListItemClick(ListView l, View v, int position, long id )
            {
                super.onListItemClick(l, v, position, id);
                final Intent intent = new Intent(this, items[position].getActivity());
                startActivityForResult(intent, position);
            }

【问题讨论】:

    标签: android listview


    【解决方案1】:

    您需要扩展 ListAdapter 并覆盖 getView。使用 getItem 使用传递的位置获取对象,然后返回适合传递的对象的视图。

    如果视图依赖于对象的类,则使用instanceof进行测试。

    【讨论】:

    • 所以你是说我需要扩展 ListAdapter 而不是 ListActivity?然后,一旦我使用 getitem 获得对象,是否需要为每个视图创建几个新的 xml 文件?如:temp1.xml、temp2.​​xml、temp3.xml,然后分别为不同的View充气?喜欢...getItem(position); layoutInflater myInflater; View v = myInflater.inflate(R.layout.temp1); View v1 = myInflater.inflate(R.layout.temp2);等等...?
    • 保留您的 ListActivity,但创建一个自定义 ListAdapter(例如,扩展 ArrayAdapter。通过调用 setListAdapter(yourCustomListAdapter) 来使用它。是的,每次调用 getView 时都会膨胀不同的视图。使确保传递的视图不为空,并且不是您希望在膨胀新的所有内容之前膨胀的类型 - 为了提高效率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    相关资源
    最近更新 更多