gpt4 book ai didi

android - 如何从android中的listview中删除一个项目

转载 作者:太空宇宙 更新时间:2023-11-03 13:38:00 25 4
gpt4 key购买 nike

我的应用程序包含一个 ListView 。 ListView 中的每个项目都有一个删除按钮。但是删除按钮无法删除 ListView 中的项目。请告诉我如何删除 ListView 和 database.my 中的项目。

我的来源:

public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.sharefolioedit);
Log.e("string",s.toString());
add = (ImageButton) findViewById(R.id.add);
add.setOnClickListener(this);
done = (Button) findViewById(R.id.done);
done.setOnClickListener(this);

getList();

}


public void onCreate1(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
delete= (ImageButton) findViewById(R.id.delete);
delete.setOnClickListener(this);
}
protected void onListItemClick(ListView l, ImageButton delete, int position,long id) {
super.onListItemClick( l, delete, position, id);
ID=id;
final Integer index =l.getSelectedItemPosition();
Log.e("delete method","delete");

Log.e("ID value",index.toString());
new AlertDialog.Builder(ShareFolioEditActivity.this)
.setTitle("Delete")
.setMessage("Are you sure ??? ")
.setNeutralButton("no",null)
.setPositiveButton("yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
confirmdelete(index);
}
}) .show();
}

public void myClickHandler(View v) {
{
// int position = 0;
// onListItemClick(lv, delete, position, ID);
// ID=id;
Log.e("delete method","delete");

final Integer a = new Integer(v.getId());
Log.e("ID value",a.toString());
new AlertDialog.Builder(ShareFolioEditActivity.this)
.setTitle("Delete")
.setMessage("Are you sure ??? ")
.setNeutralButton("no",null)
.setPositiveButton("yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
confirmdelete(a);
}
}) .show();
}
}

public void onClick(View v) {
if(v.equals(add))
{
Intent in=new Intent(ShareFolioEditActivity.this,AddCategory.class);
startActivity(in);
}
if(v.equals(done))
{
Intent i=new Intent(ShareFolioEditActivity.this,ShareFolioActivity.class);
startActivity(i);
}
}

public void confirmdelete(int index)
{
db.delete("sharelist", "_id="+index, null);
Toast.makeText(this, "row deleted"+index, Toast.LENGTH_SHORT).show();
Bundle b=null;
onCreate(b);
}

public void getList()
{ int x = 0;
String where=null;
csh=new createSqliteHelper(this);
try{

//db.open();
db=csh.getReadableDatabase();
}catch(Exception e){
System.out.println(e);
}
if (Intent.ACTION_SEARCH.equals(getIntent().getAction())) {
where=getIntent().getStringExtra(SearchManager.QUERY);
x=1;
}
if(x==1)
{
cur=db.rawQuery("SELECT * FROM sharelist where category LIKE '%"+where+"%'",null);
}else{
cur=db.rawQuery("SELECT * FROM sharelist ORDER BY category",null);}
Log.e("cursor",cur.toString());
SimpleCursorAdapter list=new SimpleCursorAdapter(this,R.layout.edititems,cur,s,i );
getListView();
setListAdapter(list);

}
}

sharefolioedit xml布局是

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text"
android:text="CATEGORIES"
android:layout_centerHorizontal="true"
/>

<Button
android:id="@+id/done"
android:text="Done"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_width="90px"
android:layout_height="20px"
android:layout_above="@id/android:list" />
<ImageButton
android:id="@+id/add"
android:text="Add"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_width="80px"
android:layout_height="20px"
android:layout_above="@id/android:list"
android:src="@drawable/addicon"/>

<ListView android:layout_width="500px"
android:layout_height="700px"
android:id="@id/android:list"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>

edititems.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">
<ImageButton
android:id="@+id/delete"
android:layout_width="70px"
android:paddingLeft="2px"
android:paddingRight="2px"
android:paddingTop="2px"
android:text="Delete"
android:layout_height="wrap_content"
android:onClick="myClickHandler"
android:src="@drawable/removeicon"
/>

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:padding="10sp">

<TextView
android:id="@+id/category"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:layout_toRightOf="@+id/catagory"
/>
</RelativeLayout>
</LinearLayout>

在 edititems.xml 中我也定义了一个删除按钮所以请检查并告诉我解决方案。

最佳答案

在您的confirmdelete 方法中,在db.delete 之后使用AsyncTask。在doInBackground 方法中查询数据库并获取一个新的Cursor。然后在onPostExecute方法中调用changeCursor在你的 SimpleCursorAdapter您调用的 list 应该是类级别字段而不是本地字段,以便您的所有方法都可以访问它。这将告诉 ListView 适配器中的数据已更改,它需要自行刷新。无需在底部的 confirmdelete 方法中调用 onCreate

这是一些代码:

private class UpdateCursor extends AsyncTask<Void, Void, Cursor> {
protected Cursor doInBackground(URL... urls) {
Cursor result = db.query(...);
return result;
}

protected void onPostExecute(Cursor result) {
list.changeCursor(result);
}
}

祝你好运。

关于android - 如何从android中的listview中删除一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4476711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com