【问题标题】:Adding custom ListView to Alert dialog将自定义 ListView 添加到警报对话框
【发布时间】:2017-06-18 00:25:17
【问题描述】:

我也想添加自定义列表视图作为警报对话框,当我从列表中选择一个项目并单击(setPositiveButton)对话框关闭并且文本更改成功但当我再次单击乘客按钮查看时,它工作正常或用于更改选择而不是应用程序不幸停止

public void onClick(View v) {               // TODO Auto-generated method stub
            AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
            builder.setCancelable(true);
            builder.setView(v);
            builder.setPositiveButton("Done", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id){
                    dialog.cancel();
                }
            });
            builder.setView(listView);
            AlertDialog dialog= builder.create();
            dialog.show();
        }
    });

【问题讨论】:

  • 您已经在这里转储了一些代码,但是您的问题是什么?你想达到什么目标,你面临的问题是什么?

标签: android listview android-alertdialog


【解决方案1】:

请尝试这些设置警报对话框中的列表视图

AlertDialog.Builder   alertdialog = new AlertDialog.Builder(context);
 LayoutInflater inflaterr = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View  viewtemplelayout= inflaterr.inflate(R.layout.product_popup, null);
    YourAdapter adap=new YourAdapter(R.layout.product_add_popup_adapter,context);
    list.setAdapter(adap);
     alertdialog.setView(viewtemplelayout);
     alertdialog.show()

我认为它对你很有帮助。

【讨论】:

    【解决方案2】:
     AlertDialog.Builder builderSingle = new AlertDialog.Builder(YourActivity.this);
    
            List<Requests> requester = new ArrayList<>();
            final NameAdapter AlertDialogueAdapter = new NameAdapter(this, R.layout.your_custom_layout, requester);
    
            AlertDialogueBuilder.add(new Requests("Hello","StackOverF"))
            builderSingle.setIcon(R.drawable.avatar);
            builderSingle.setTitle("Select Message by,");
            builderSingle.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    finish();
                }
            });
            builderSingle.setAdapter(AlertDialogueAdapter, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Requests req = AlertDialogueAdapter.getItem(which);
                    AlertDialog.Builder builderInner = new AlertDialog.Builder(ViewSpecialMessage.this);
                    builderInner.setMessage(req.getKey());
                    builderInner.setTitle(req.getName());
                    builderInner.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog,int which) {
                            dialog.dismiss();
                        }
                    });
                    builderInner.show();
                }
            });
            builderSingle.show();
    
    public class Requests{
        private String name;
        private String key;
        public Requests(){
    
        }
        public Requests(String name, String key){
            this.name = name;
            this.key = key;
        }
    
        public String getName() {
            return name;
        }
    
        public String getKey() {
            return key;
        }
    }
    public class NameAdapter extends ArrayAdapter<Requests>{
    
        public NameAdapter(Context context, int resource, List<Requests> objects) {
            super(context, resource, objects);
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = ((Activity) getContext()).getLayoutInflater().inflate(R.layout.name_adapter_layout, parent, false);
            }
            final Requests message = getItem(position);
            TextView NameOfRequester = (TextView) convertView.findViewById(R.id.RequesterName);
            ImageView ImgOfRequester = (ImageView) convertView.findViewById(R.id.RequesterImage);
            NameOfRequester.setText(message.getName());
            return convertView;
        }
    }
    

    【讨论】:

      【解决方案3】:

      你可以试试这个

      通过将类扩展为 ArrayAdapter(在您的情况下)来创建 cotom 适配器

      覆盖 getView() 函数(也使视图膨胀)。

      之后就可以直接使用设置适配器了

       builder.setAdapter(costomAdapter);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-23
        • 1970-01-01
        • 1970-01-01
        • 2015-04-13
        相关资源
        最近更新 更多