Android对话框Ⅰ -- 常用的对话框类型

扫描二维码关注公众号,回复: 2543570 查看本文章

长按事件触发对话框

Java代码(不全)

@Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setIcon(R.drawable.btn_selector );
        builder.setTitle("消息提示");
        builder.setMessage("还做什么做,队长都带着他小姨子跑了!");
        builder.setPositiveButton("不干了!不干了!", new DialogInterface.OnClickListener() {  //button不是必须,括号内第二项是内部类
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "但是他把钱都留下了!",Toast.LENGTH_SHORT).show();
            }
        });  //注意作用域,是MainActivity.this
        builder.create().show();  //.create()会自动生成
        return true;
    }

精简(连点)  方法的返回值恰好是当前对象本身的时候

@Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.btn_selector )
        .setTitle("消息提示")
        .setMessage("还做什么做,队长都带着他小姨子跑了!")
        .setPositiveButton("不干了!不干了!", new DialogInterface.OnClickListener() {  
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "但是他把钱都留下了!",Toast.LENGTH_SHORT).show();
            }
        })  
        .show();  
        return true;
    }

Java代码

 @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.btn_selector )
        .setTitle("消息提示")
        .setNegativeButton("我会坚持做完的!",null)  //取消只是停留在当前界面,不做任何特殊的操作.可以写个null
        .setPositiveButton("不干了!不干了!", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                finish();  //保留程序资源,仅把当前Activity关掉
//                System.exit(0);  //结束进程
//                Toast.makeText(MainActivity.this, "但是他把钱都留下了!",Toast.LENGTH_SHORT).show();
            }
        })
        .show();
        return true;
    }

Java代码(不全)

@Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        final String[] arr = {"初始Android","开发环境的搭建","基础控件Ⅰ","基础控件Ⅱ"};    //final修饰变为常量,可以穿透作用域     //添加字符串数组作为列表资源
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.btn_selector )
        .setTitle("消息提示")
        .setItems(arr, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {    //在onclick中编写列表资源被点击后的处理代码
                Toast.makeText(MainActivity.this, "用户选择了:"+arr[which],Toast.LENGTH_SHORT).show();
            }
        })
        .setPositiveButton("不干了!不干了!", new DialogInterface.OnClickListener() {    //用来关闭当前对话框
            @Override
            public void onClick(DialogInterface dialog, int which) {
//                finish();
//                System.exit(0);
            }
        })
        .show();
        return true;
    }

Java代码(不全)

int selectedID = 0;
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        final String[] arr = {"1星","2星","3星","4星","5星"};
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.btn_selector )
        .setTitle("消息提示")
        .setSingleChoiceItems(arr, 0, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                selectedID = which;
                Toast.makeText(MainActivity.this, "用户选择了:"+arr[which],Toast.LENGTH_SHORT).show();
            }
        })
        .setPositiveButton("不干了!不干了!", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "用户的决定是:"+arr[selectedID],Toast.LENGTH_SHORT).show();
            }
        })
        .show();
        return true;
    }

Java代码(不全)

 ArrayList<Integer> choice = new ArrayList<Integer>();
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        final String[] arr = {"游泳","读书","足球","逛街","其他"};
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.btn_selector )
        .setTitle("消息提示")
        .setMultiChoiceItems(arr,
                new boolean[]{false, false, false, false, false},
                new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        if (isChecked){
                            choice.add(which);
                        }else{
                            choice.remove(which);
                        }
                        Toast.makeText(MainActivity.this, "用户的选择:" + choice.toString(),Toast.LENGTH_SHORT).show();
                    }
                })
        .setPositiveButton("不干了!不干了!", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "用户的决定是:" + choice.toString(),Toast.LENGTH_SHORT).show();
            }
        })
        .show();
        return true;
    }

Java代码(全)

public class MainActivity extends Activity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main7);

        //1.拿到listview对象
        ListView lv = (ListView) this.findViewById(R.id.lv_main);

        //2.数据源
        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("logo", R.drawable.ic_10);
        map.put("title", "千千静听");
        map.put("version", "版本: 8.4.0");
        map.put("size", "大小: 32.81M");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("logo", R.drawable.ic_2);
        map.put("title", "时空猎人");
        map.put("version", "版本: 2.4.1");
        map.put("size", "大小: 84.24M");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("logo", R.drawable.ic_4);
        map.put("title", "360新闻");
        map.put("version", "版本: 6.2.0");
        map.put("size", "大小: 11.74M");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("logo", R.drawable.ic_15);
        map.put("title", "捕鱼达人2");
        map.put("version", "版本: 2.3.0");
        map.put("size", "大小: 45.53M");
        list.add(map);



        //3.设置适配器
        MyAdapter adapter = new MyAdapter(this);
        adapter.setList(list);


        //4.关联适配器
         lv.setAdapter(adapter);

        //5
        lv.setOnItemClickListener(this);
        lv.setOnItemLongClickListener(this);


    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this, "点击"+position,Toast.LENGTH_SHORT).show();
        Intent intent = new Intent();
        intent.setClass(this,DetailActivity.class);

        //1.获取所点击行的数据(Map)
        HashMap<String, Object> itemMap
                = (HashMap<String, Object>) parent.getItemAtPosition(position);
        intent.putExtra("index",""+position);
        intent.putExtra("title",""+itemMap.get("title"));
        startActivity(intent);
    }

    ArrayList<Integer> choice = new ArrayList<Integer>();
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//        Toast.makeText(this, "长按"+position,Toast.LENGTH_SHORT).show();
        final String[] arr = {"游泳","读书","足球","逛街","其他"};
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.btn_selector )
        .setTitle("消息提示")
        .setMultiChoiceItems(arr,
                new boolean[]{false, false, false, false, false},
                new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        if (isChecked){
                            choice.add(which);
                        }else{
                            choice.remove(which);
                        }
                        Toast.makeText(MainActivity.this, "用户的选择:" + choice.toString(),Toast.LENGTH_SHORT).show();
                    }
                })
        .setPositiveButton("不干了!不干了!", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
//                finish();
//                System.exit(0);
                Toast.makeText(MainActivity.this, "用户的决定是:" + choice.toString(),Toast.LENGTH_SHORT).show();
            }
        })
        .show();
        return true;
    }


}

实例:

Java代码(不全)  加在源代码最外层即可

@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
            .setIcon(R.drawable.fire1)
            .setTitle("确认对话框")
            .setMessage("残忍离开?")
            .setNegativeButton("怎么可能!", null)
            .setPositiveButton("选择残忍!", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();      
                    //System.exit(0);
                }
            }).show();     //线程阻断,等待选择

}

item项中按钮的点击事件  外部传入接口,由Activity实现

-- New -- JavaClass -- Interface

public interface IControl {
    void btnclick(int pos);
}

MyAdapter

public class MyAdapter extends BaseAdapter {

    List<Map<String, Object>> list;
    LayoutInflater inflater;

    IControl control;

    public void setControl( IControl control) {
        this.control = control;
    }

    public MyAdapter(Context context) {

        this.inflater = LayoutInflater.from(context);
    }

    public void setList(List<Map<String, Object>> list) {
        this.list = list;
    }


    @Override
    public int getCount() {

        return list.size();
    }

    @Override
    public Object getItem(int position) {

        return list.get(position);
    }

    @Override
    public long getItemId(int position) {

        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;
        if(convertView == null){
            convertView = inflater.inflate(R.layout.item, null);
            holder = new ViewHolder();
            holder.logo = (ImageView) convertView.findViewById(R.id.logo);
            holder.title = (TextView) convertView.findViewById(R.id.title);
            holder.version = (TextView) convertView.findViewById(R.id.version);
            holder.size = (TextView) convertView.findViewById(size);

            holder.btn = (Button) convertView.findViewById(btn);

            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }


        Map map = list.get(position);
        holder.logo.setImageResource((Integer) map.get("logo"));
        holder.title.setText((String) map.get("title"));
        holder.version.setText((String) map.get("version"));
        holder.size.setText((String) map.get("size"));

        holder.btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                control.btnclick(position);
            }
        });


        return convertView;
    }

    public class ViewHolder{
        ImageView logo;
        TextView title;
        TextView version;
        TextView size;

        Button btn;
    }
}

Java代码(全)

public class MainActivity extends Activity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener, IControl {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main7);

        //1.拿到listview对象
        ListView lv = (ListView) this.findViewById(R.id.lv_main);

        //2.数据源
        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("logo", R.drawable.ic_10);
        map.put("title", "千千静听");
        map.put("version", "版本: 8.4.0");
        map.put("size", "大小: 32.81M");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("logo", R.drawable.ic_2);
        map.put("title", "时空猎人");
        map.put("version", "版本: 2.4.1");
        map.put("size", "大小: 84.24M");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("logo", R.drawable.ic_4);
        map.put("title", "360新闻");
        map.put("version", "版本: 6.2.0");
        map.put("size", "大小: 11.74M");
        list.add(map);

        map = new HashMap<String, Object>();
        map.put("logo", R.drawable.ic_15);
        map.put("title", "捕鱼达人2");
        map.put("version", "版本: 2.3.0");
        map.put("size", "大小: 45.53M");
        list.add(map);



        //3.设置适配器
        MyAdapter adapter = new MyAdapter(this);
        adapter.setList(list);

        adapter.setControl(this);


        //4.关联适配器
         lv.setAdapter(adapter);

        //5
        lv.setOnItemClickListener(this);
        lv.setOnItemLongClickListener(this);


    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(this, "点击"+position,Toast.LENGTH_SHORT).show();
        Intent intent = new Intent();
        intent.setClass(this,DetailActivity.class);

        //1.获取所点击行的数据(Map)
        HashMap<String, Object> itemMap
                = (HashMap<String, Object>) parent.getItemAtPosition(position);
        intent.putExtra("index",""+position);
        intent.putExtra("title",""+itemMap.get("title"));
        startActivity(intent);
    }

    ArrayList<Integer> choice = new ArrayList<Integer>();
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
//        Toast.makeText(this, "长按"+position,Toast.LENGTH_SHORT).show();
        final String[] arr = {"游泳","读书","足球","逛街","其他"};
        new AlertDialog.Builder(this)
        .setIcon(R.drawable.btn_selector )
        .setTitle("消息提示")
        .setMultiChoiceItems(arr,
                new boolean[]{false, false, false, false, false},
                new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        if (isChecked){
                            choice.add(which);
                        }else{
                            choice.remove(which);
                        }
                        Toast.makeText(MainActivity.this, "用户的选择:" + choice.toString(),Toast.LENGTH_SHORT).show();
                    }
                })
        .setPositiveButton("不干了!不干了!", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
//                finish();
//                System.exit(0);
                Toast.makeText(MainActivity.this, "用户的决定是:" + choice.toString(),Toast.LENGTH_SHORT).show();
            }
        })
        .show();
        return true;
    }

    @Override
    public void onBackPressed() {
        new AlertDialog.Builder(this)
                .setIcon(R.drawable.fire1)
                .setTitle("确认对话框")
                .setMessage("残忍离开?")
                .setNegativeButton("怎么可能!", null)
                .setPositiveButton("选择残忍!", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
//                        finish();
                        System.exit(0);
                    }
                }).show();
    }

    @Override
    public void btnclick(int pos) {
        Toast.makeText(this, "点击了item"+pos, Toast.LENGTH_SHORT).show();
    }
}

猜你喜欢

转载自blog.csdn.net/from_heat/article/details/81360318