とAlertDialogで一つの項目を無効にする方法は、私は次のコードでダイアログを作成します。アンドロイド:MultiChoiceItems
final CharSequence[] items = {" One ", " Two ", " Three "};
AlertDialog dialog = new AlertDialog.Builder(this)
.setTitle("Title1")
.setMultiChoiceItems(items, null, null)
.setPositiveButton("CLOSE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int id) {
Log.e("1k", "count : " + ((AlertDialog) dialog).getListView().getChildCount());
}
}).show();
ListView lw = dialog.getListView();
//lw.getChildAt(0).setEnabled(false);
Log.e("1k", "count : " + lw.getChildCount());
これは、ダイアログボックスを作成します。 "CLOSE"ボタンをクリックすると、ログに "3"の出力が表示されます。 これまでのところ、とても良い "items"配列には3つの文字列があります。
"show()"の後にが呼び出される最後のコード行は、ログに「0」と表示されます。
私は何をしたいことリストの最初の項目を無効にすることが、「getChildAt(0)」はnullを返しますので、このコードは、NullPointerExceptionがスローされます。
dialog.getListView().getChildAt(0).setEnabled(false);
私は最初の項目を無効にするにはどうすればよいですダイアログのリスト?
(とその理由のgetChildCountは(ない)..
...ショーの後に呼び出されたとき)(0の代わりに、3を返す?
.. PositiveButtonのonclickのに予想通り3を返す?)
代わりに '' setAdapter' ...あなたのアダプタ実装のオーバーライドで 'ListAdapter'インタフェースを使用setMultiChoiceItems'私はこれを試してみました – Selvin
...が、 android.Routout.select_dialog_multichoiceをレイアウトとして使用しても、ルックアンドフィールはネイティブではありませんでした(これは重要なものではありません。ビューはあまりにも大きかった。 Lollipopで使用されているレイアウトが正しければ、それは順方向互換性がありません) – MehmetGunacti