长按事件触发对话框
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();
}
}