0

我想实现一个,所以按照这个答案Custom Multiple Choice Dialog的指示,这就是我所做的:

xml我为我的行创建了CheckedTextView

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:textColor="#000000"
    android:fontFamily="sans-serif-condensed"
    style="?android:textAppearanceSmall"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:clickable="true"/>

现在,我的Dialog

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setAdapter(
                new ArrayAdapter<String>(getActivity(),
                        R.layout.dialog_list_item, tables), null)
        // Set the action buttons
                .setPositiveButton(android.R.string.ok,
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.dismiss();
                            }
                        });
AlertDialog alertDialog = builder.create();

alerDialog.show();

如您所见,我还没有实现setOnItemClickListener,但我不知道如何实现。不过,Dialog看起来还不错。如何为每个调用 ClickListener CheckedTextView

非常比你

4

2 回答 2

3

@Rahul Gupta 建议的方式在实现ListViewand后起作用OnItemClickListener,但如果ListView包含太多项目,Views则未显示的项目也将被“检查”。我想在Views用户实际向下滚动并查看其余项目之前,尚未生成。

我使它工作的方式是创建Layout一个单一ListView的并将值设置为choice modeto CHOICE_MODE_MULTIPLE。在这种情况下,我不必处理每个项目,但我可以通过使用检索所选项目的数组listview.getCheckedItemPositions()

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater li = LayoutInflater.from(getActivity());
View view= li.inflate(R.layout.listview_dialog, null);
builder.setView(view);
builder.setTitle(title);

listView = (ListView) view.findViewById(R.id.listview);

ArrayAdapter<String> ad = new ArrayAdapter<String>(getActivity(), R.layout.dialog_list_item , R.id.text2, tables);
listView.setAdapter(ad);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setDivider(null);

builder.create();
于 2014-02-25T01:50:22.343 回答
0

是的,您可以为您的CheckedTextView.

你只需要找到它的参考。现在就像在您的对话框中一样,您必须这样做:-

CheckedTextView dialogCheckedTextView = (CheckedTextView ) alertDialog.findViewById(R.id.yourcheckedtextboxid);
dialogCheckedTextView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
     //TODO
    }
 });
于 2014-02-23T16:59:22.663 回答