我正在尝试捕获长按事件并在列表视图中显示一个项目的警告框..我正在使用switch case ...这样工作正常。
问题:
当我长按first long press
列表视图中的项目时,不显示任何警告框,但是如果我这样做,则会显示second time
警告框。我无法理解该行为。 ..
专家可以帮我解决这个问题,请让我知道我在哪里做错了也纠正了我,所以一开始我需要得到警报框。
代码:
Listview.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(final AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
System.out.println("Inside listview long click");
final ViewHolder myviewholder3=new ViewHolder();
myviewholder3.cb=(CheckBox) arg1.findViewById(R.id.checkBox1);
myviewholder3.view1=(Button) arg1.findViewById(R.id.button1);
System.out.println(arg1.getId());
System.out.println("cb"+R.id.checkBox1);
System.out.println(arg1.getId());
System.out.println("butt"+R.id.button1);
switch(arg1.getId()){
case R.id.checkBox1:
myviewholder3.cb.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder Alert1=new AlertDialog.Builder(sm.this);
StockAlert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
Alert1.show();
return false;
}
});
break;
case R.id.button1:
myviewholder3.view1.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
AlertDialog.Builder ViewDetailAlert=new AlertDialog.Builder(sm.this);
Alert2.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
});
Alert2.show();
return false;
}
});
break;
default:
System.out.println("No Selection");
}
return false;
}
});
答案 0 :(得分:1)
我认为这是因为你在onLongClickListener
内为你的观点注册onItemLongClick
,所以在你第一次点击你的ListView项目时,它只是在你的观点上注册onLongClickListener,然后在第二次长时间点击时,您的项目视图的长按将按预期工作。尝试在getView()中为ListView的视图注册监听器。