我正在为ListView使用自定义列表适配器。如何从选中的复选框中获取数据库rowid / _id,以便我可以多次从数据库中删除数据?
这是我的活动:
import android.app.ListActivity;
import java.text.DecimalFormat;
import org.yhw.PlanWithMe.R;
import android.content.*;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.database.Cursor;
public class Finance_delete extends ListActivity {
Cursor cursor;
private TextView dateText;
private Button btnCancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.finance_delete);
registerForContextMenu(this.getListView());
DBAdapter dbHelper = new DBAdapter(this);
dbHelper.open();
// Get a Cursor for the list items
Intent intent = getIntent();
String date = intent.getStringExtra("date");
Cursor listCursor = dbHelper.getAllFinance(date);
startManagingCursor(listCursor);
// set the custom list adapter
setListAdapter(new MyListAdapter(this, listCursor));
dateText = (TextView) findViewById(R.id.lblDate);
dateText.setText("Delete Spending: " + date);
btnCancel = (Button) findViewById(R.id.btnCancel);
btnCancel.setOnClickListener(click_listener);
}
private class MyListAdapter extends ResourceCursorAdapter {
public MyListAdapter(Context context, Cursor cursor) {
super(context, R.layout.list_item_with_description_delete, cursor);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
CheckBox cbListCheck = (CheckBox) view
.findViewById(R.id.list_checkbox);
cbListCheck.setChecked(false);
cbListCheck
.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton cb,
boolean isChecked) {
if (cb.isChecked()) {
// action
} else if (isChecked == false) {
// action
}
}
});
TextView title = (TextView) view.findViewById(R.id.list_category);
title.setText(cursor.getString(cursor
.getColumnIndex(DBAdapter.KEY_Category)));
TextView details = (TextView) view.findViewById(R.id.list_desc);
StringBuffer detailsText = new StringBuffer();
String description = cursor.getString(cursor
.getColumnIndex(DBAdapter.KEY_Desc));
TextView spendings = (TextView) view
.findViewById(R.id.list_spending);
String spending = cursor.getString(cursor
.getColumnIndex(DBAdapter.KEY_Spending));
double tgtspend = Double.parseDouble(spending);
DecimalFormat dFormat = new DecimalFormat("0.00");
String formatSpend = dFormat.format(tgtspend);
spendings.setText("$" + formatSpend);
if (description != null && description.length() > 0) {
detailsText.append(description);
} else {
detailsText.append("-");
}
details.setText(detailsText.toString());
}
}
private OnClickListener click_listener = new OnClickListener() {
public void onClick(View view) {
// Intent intent = null;
switch (view.getId()) {
case R.id.btnCancel:
finish();
break;
}
}
};
}
我的活动布局:
<?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"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/finance_top" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="45dp"
android:src="@drawable/navbar" />
<TextView
android:id="@+id/lblDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginTop="57dp"
android:layout_alignParentLeft="true"
android:textColor="#ffffff"
android:textSize="16dp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="240dp"
android:layout_marginTop="48dp"
android:src="@drawable/divider" />
<Button
android:id="@+id/btnTick"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="45dp"
android:layout_marginTop="56dp"
android:background="@drawable/btn_tick" />
<Button
android:id="@+id/btnCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="6dp"
android:layout_marginTop="56dp"
android:background="@drawable/btn_cancel" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="282dp"
android:layout_marginTop="48dp"
android:src="@drawable/divider" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="92dp"
android:orientation="vertical" >
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="106dp"
android:layout_marginTop="180dp"
android:text="@string/finance_note"
android:textColor="#ffffff"
android:textSize="18dp" />
</LinearLayout>
</RelativeLayout>
我的ListView布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeight" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_weight="1"
android:duplicateParentState="true" >
<TextView
android:id="@+id/list_category"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:gravity="center_vertical"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/list_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@id/list_category"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/list_spending"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:gravity="center"
android:paddingBottom="10dip"
android:paddingTop="10dip"
android:textAppearance="?android:attr/textAppearanceLarge" />
<CheckBox
android:id="@+id/list_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="false"
android:text="" >
</CheckBox>
</RelativeLayout>
</LinearLayout>
答案 0 :(得分:2)
1)使用checkbox.setTag属性将复选框与ID链接。
2)在删除按钮中,单击事件执行以下逻辑。
希望您明白这一点,请检查link for conceptual实施。