为什么setOnItemLongClickListener不起作用?

时间:2014-03-22 13:43:32

标签: android sqlite listview sql-delete

我使用Listview从Sqlite数据库生成SimpleAdapter。我想在长按手机上的行时删除该项目。但listview行在长时间内没有响应任何内容。任何人都可以指导我这件事吗? 我的代码如下:

Lists.java

  ListView l=(ListView)findViewById(R.id.listView1);
  l.setLongClickable(true);
  details=db.getlocationdetails();
  if((details=db.getlocationdetails()).size()!=0)
  {

      ListAdapter k=new SimpleAdapter(Lists.this,details,R.layout.testviewnew,new String[]{"locname","profile"},new int[]{R.id.locationame,R.id.proname});
      l.setAdapter(k);
  }
 l.setOnItemLongClickListener(new OnItemLongClickListener() {

    @Override
    public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
        // TODO Auto-generated method stub
        String s=String.valueOf(arg2);
        db.deleterow(s);
        return true;
    }
});
}

这是我的数据库代码:

public void deleterow(String id) {
Log.d(LOGCAT,"delete");
SQLiteDatabase database = this.getWritableDatabase();    
String deleteQuery = "DELETE FROM  animals where savedlocation='"+ id +"'";
Log.d("query",deleteQuery);     
database.execSQL(deleteQuery);
database.close();
}

这是我的xml文件

activity_lists.xml

    <ListView
    android:id="@+id/listView1"
    android:layout_width="fill_parent"
    android:layout_height="250dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
  android:longClickable="true"
    android:layout_below="@+id/relativeLayout1" >

</ListView>

testviewnew.xml

 <ImageButton
    android:id="@+id/imageButton1"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/ishutup_pointer" 
    />

<TextView
    android:id="@+id/locationame"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="31dp"
    android:layout_toRightOf="@+id/imageButton1"
    android:text="TextView" 
    android:textStyle="bold"
    android:textSize="15dp"
    android:textColor="@color/white"/>

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageButton1"
    android:layout_alignLeft="@+id/locationame"
     android:textStyle="bold"
    android:textSize="15dp"
    android:textColor="@color/white"
    android:text="Profile" />

<TextView
    android:id="@+id/proname"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView2"
    android:layout_alignBottom="@+id/textView2"
    android:layout_marginLeft="30dp"
    android:layout_toRightOf="@+id/textView2"
    android:textStyle="bold"
    android:textSize="15dp"
    android:textColor="@color/white"
    android:text="TextView" />

<ImageButton
    android:id="@+id/imageButton2"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:textStyle="bold"
    android:textSize="15dp"
    android:textColor="@color/white"
    android:src="@drawable/ishutup_edit" />

1 个答案:

答案 0 :(得分:4)

你的xml中有两个imageButton但你没有任何监听器,所以你可以用imageView改变它。所以你的代码必须是:

<ImageView
    android:id="@+id/imageButton1"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/ishutup_pointer" 
    />

<TextView
    android:id="@+id/locationame"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="31dp"
    android:layout_toRightOf="@+id/imageButton1"
    android:text="TextView" 
    android:textStyle="bold"
    android:textSize="15dp"
    android:textColor="@color/white"/>

<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/imageButton1"
    android:layout_alignLeft="@+id/locationame"
     android:textStyle="bold"
    android:textSize="15dp"
    android:textColor="@color/white"
    android:text="Profile" />

<TextView
    android:id="@+id/proname"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView2"
    android:layout_alignBottom="@+id/textView2"
    android:layout_marginLeft="30dp"
    android:layout_toRightOf="@+id/textView2"
    android:textStyle="bold"
    android:textSize="15dp"
    android:textColor="@color/white"
    android:text="TextView" />

<ImageView
    android:id="@+id/imageButton2"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:textStyle="bold"
    android:textSize="15dp"
    android:textColor="@color/white"
    android:src="@drawable/ishutup_edit" />

因为imageButton想要点击默认点击,如果您不想更改代码,可以在android:descendantFocusability="blocksDescendants"上添加testviewnew,就像我在评论中说的那样删除那些

的听力