我想实现一个Custom Multiple Choice Dialog
,按照this answer的指示,这就是我所做的:
我为我的行创建了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
看起来很好。如何为每个CheckedTextView
?
比你非常
答案 0 :(得分:2)
@Rahul Gupta建议在实施ListView
和OnItemClickListener
后的工作方式,但如果ListView
包含太多项目,那么未显示的Views
是也将被“检查”。我想,在用户实际向下滚动并查看其余项目之前,尚未生成Views
。
我开展工作的方式是使用Layout
创建ListView
并将choice mode
的值设置为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();
答案 1 :(得分:0)
是的,您可以为CheckedTextView
实现onClickListener。
你必须找到它的参考。现在,就像在对话框中一样,你必须这样做: -
CheckedTextView dialogCheckedTextView = (CheckedTextView ) alertDialog.findViewById(R.id.yourcheckedtextboxid);
dialogCheckedTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//TODO
}
});