Ton*_*ony 12 android android-alertdialog
好吧我正在创建一个ArrayAdapter并在我的Alert Dialog中使用它,因为我不想在SingleItemSelection对话框中显示默认的单选按钮.
相反,我想要更改所选项目的背景,然后当用户按下肯定按钮时,我将执行与所选项目相关的操作.
private void showAlertDialog()
{
final String[] options = getResources().getStringArray(R.array.dialog_options);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, options);
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this);
dialogBuilder.setTitle("My Dialog");
dialogBuilder.setAdapter(adapter, new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Toast.makeText(getApplicationContext(), "item clicked at index " + which, Toast.LENGTH_LONG).show();
// Here I need to change the background color of the item selected and prevent the dialog from being dismissed
}
});
//String strOkay = getString(R.string.okay);
dialogBuilder.setPositiveButton("OK", null); // TODO
dialogBuilder.setNegativeButton("Cancel", null); // nothing simply dismiss
AlertDialog dialog = dialogBuilder.create();
dialog.show();
}
Run Code Online (Sandbox Code Playgroud)
我正在努力解决两个问题.
如何在用户单击项目时阻止对话框被解除
如何更改用户单击时所选项目的背景
Chu*_*pik 19
若要防止对话框关闭项目单击,您可以使用AdapterView .OnItemClickListener而不是DialogInterface .OnClickListener.
像这样:
dialogBuilder.setAdapter(adapter, null);
...
AlertDialog dialog = dialogBuilder.create();
alertDialog.getListView().setOnItemClickListener(
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// do your stuff here
}
});
Run Code Online (Sandbox Code Playgroud)
您可以将自定义ListView设置为AlertDialog的内容并设置OnItemClickListener
AlertDialog.Builder builder = new AlertDialog.Builder(this);
String[] items = ...;
ListView list = new ListView(this);
list.setAdapter(new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, items));
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View view, int pos, long id) {
...
}
});
builder.setView(list);
Run Code Online (Sandbox Code Playgroud)
然后保存对话框的引用
mDialog = builder.show();
Run Code Online (Sandbox Code Playgroud)
为了在必要时解雇它
mDialog.dismiss();
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
7254 次 |
| 最近记录: |