5

AlertDialog にカスタム リスト ビューを設定しようとしていますが、エラーなしで表示または実行できないようです。

   private void buildDialog(){

        int selectedItem = -1; //somehow get your previously selected choice
        LayoutInflater inflater = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE));
        View customView = inflater.inflate(R.layout.listview, null, false);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(customView);
        builder.setTitle("Select Weapon").setCancelable(true);
        builder.setSingleChoiceItems(inventory, selectedItem, "Desc", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which)
            { 
                ListView lv = ((AlertDialog) dialog).getListView();
                itemId = lv.getAdapter().getItemId(which);
                new changeEQ().execute();
            }
        });



        dialog = builder.create();
    }

これは私の AlertDialog ですが、カスタム レイアウト、リストビュー、リスト行を使用するために何を追加すればよいかわかりません。私はオンラインでガイドを見回しましたが、それらが示すものは何もうまくいかないようです. IE私は何か間違ったことをしているに違いありません。

編集:コードを変更して回答を含めましたが、画面に表示される内容は変更されていません。エラーはありませんが、見た目に変化はありません。

4

1 に答える 1

11

AlertDialog に渡したいカスタム レイアウトがある場合は、次を試してください。

LayoutInflater inflater = ((LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE));
View customView = inflater.inflate(R.layout.custom_dialog, null, false);
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(customView);

リスナーを定義したい場合は、次を試してください。

ListView list = (ListView) customView.findViewById(R.id.listView1);
list.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        // Do as you please
    }
});
于 2012-04-28T22:16:43.443 に答える