【发布时间】:2023-03-29 05:01:01
【问题描述】:
我是 JAVA 和 android 的初学者。我设法在每个 listView 项目上添加了一个 setOnItemClickListener,如果您单击一个项目(文本),它会从 sqlite 数据库中删除该项目。稍后我将更改它以转到新活动,因此我希望我的按钮 deleteFavorite 在项目文本旁边的每一行上,如果您单击该按钮,它将从 sqlite 数据库中删除该行。
如何获得删除按钮 (deleteFavorite) 以删除 listView 中的项目?
我最喜欢的.java
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
public class Favorite extends ActionBarActivity implements OnItemClickListener {
TextView favoriteTitle;
ListView list;
MySQLiteHelper db;
ArrayAdapter<DBLite> mArrayAdapter;
DBLite item;
Button deleteFavorite;
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
db = new MySQLiteHelper(this);
item = db.getAllXXX().get(position);
db.deleteXXX(item);
mArrayAdapter = new ArrayAdapter<DBLite>(this,
R.layout.list_view, R.id.txt, db.getAllXXX());
list.setAdapter(mArrayAdapter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.favorite);
favoriteTitle = (TextView) findViewById(R.id.favorite_title);
db = new MySQLiteHelper(this);
list = (ListView) findViewById(R.id.favorite_list);
mArrayAdapter = new ArrayAdapter<DBLite>(this,
R.layout.list_view, R.id.txt, db.getAllXXX());
list.setAdapter(mArrayAdapter);
list.setOnItemClickListener(this);
}
我最喜欢的.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/xxx"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.xxx.xxx.Favorite">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/text_background"
android:padding="10sp"
android:orientation="vertical">
<ListView android:id="@+id/favorite_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="#666666"
android:dividerHeight="1sp"
android:layout_below="@+id/favorite_title" />
<TextView
android:id="@+id/favorite_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/favorite_title"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:layout_marginBottom="10sp" />
</RelativeLayout>
</RelativeLayout>
我的 list_view.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10sp"
android:paddingBottom="10sp"
android:descendantFocusability="blocksDescendants"
android:gravity="center_vertical"
android:orientation="vertical" >
<Button
android:id="@+id/delete_favorite_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/xxx"
android:focusable="false"
android:focusableInTouchMode="false"
android:paddingTop="10dp"
android:paddingRight="10dp"
android:paddingBottom="10dp" />
<TextView
android:id="@+id/txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="#FFFFFF" />
</LinearLayout>
【问题讨论】:
-
到底是什么问题?你说,“如果你点击一个项目,它会从 sqlite 数据库中删除该项目”。但是然后你说,“但是我希望我的按钮 deleteFavorite 在每一行上,如果你单击该按钮,它将从 sqlite 数据库中删除该行”。那么它是删除还是不删除?
-
如果您现在单击项目(文本),它会删除该项目,但我不希望这样。我希望按钮执行此操作。对不起,如果我不够清楚,现在有点累了。
-
没问题。只是需要澄清一下。
-
哦,按钮上有
android:focusable="false"。如果你删除它怎么办?我没有意识到按钮在每一行。此外,您将需要使用自定义适配器,然后为getView()中的按钮设置onClickListener -
每一行都会有一个按钮。所有行都有相同的按钮。我想如果它现在与项目(文本)点击一起工作,我可以使用类似于按钮的东西。你认为这行得通还是我必须尝试完全不同的东西?
标签: java android listview button