Android对话框Ⅰ -- 常用的对话框类型
长按事件触发对话框
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(); } }