Question

I am generating a Listview from a Sqlite database using a SimpleAdapter. I want to delete the item on long pressing the row on the phone. But the listview row is not responding to anything on long pressing. Can anyone guide me in this matter? My codes are as follows:

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;
    }
});
}

And this is my database code:

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();
}

And here are my xml files

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" />
Was it helpful?

Solution

you have two imageButton in your xml but you don't have any listener on those, so you can change that with imageView. so your code must be:

<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" />

as your imageButton want to listen click as default, if you want don't change your code you can add android:descendantFocusability="blocksDescendants" on parrent of testviewnew like as i said on comment to remove listening on those

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top