问题
- Here is the code I am using to show a custom
ListView
using simpleCursorAdapter
- I am using this code to show cart items, and I want to add button in
ListView
- As I am new to android development I'm not able to figure out what the problem is
myDbHelper.openDataBase();
final Cursor ictemp = myDbHelper.getOrdredItems(myDbHelper);
if (ictemp != null) {
ictemp.moveToFirst();
count = ictemp.getCount();
Log.d("count", "count===" + count);
String[] from = new String[] { "item_name", "item_rate", "qty",
"unit" };
int[] to = new int[] { R.id.tv_Name, R.id.tv_Rate, R.id.et_qty,
R.id.tv_unit };
final SimpleCursorAdapter sc = new SimpleCursorAdapter(this,
R.layout.list_row2, ictemp, from, to, 0);
final Cursor crs = myDbHelper.getTotal(myDbHelper);
if (crs != null) {
crs.moveToFirst();
String total = crs.getString(0);
Gtotal.setText("Rs." + total);
tvcount.setText("" + count);
}
lv.setAdapter(sc);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view,
final int pos, long arg3) {
remove = (Button) arg0.findViewById(R.id.btn_remove);
switch (arg0.getId()) {
case R.id.btn_remove:
Toast.makeText(ctx, "Clicked on " + pos,
Toast.LENGTH_SHORT).show();
break;}
}
});
回答1:
One solution is to create a CustomAdapter
that extends SimpleCursorAdapter
.
Then override bindView
method
In bindView
, find the Button
then handle onClickEvent
public class CustomAdapter extends SimpleCursorAdapter {
private Context mContext;
private Context appContext;
private int layout;
private Cursor cr;
private final LayoutInflater inflater;
public CustomAdapter(Context context, int layout, Cursor c, String[] from, int[] to) {
super(context, layout, c, from, to);
this.layout = layout;
this.mContext = context;
this.inflater = LayoutInflater.from(context);
this.cr = c;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
return inflater.inflate(layout, null);
}
@Override
public void bindView(View view, Context context, Cursor cursor) {
super.bindView(view, context, cursor);
...
TextView tv_Name = (TextView) view.findViewById(R.id.tv_Name);
tv_Name.setText(...);
...
Button btnRemove = (Button) view.findViewById(R.id.btn_remove);
btnRemove.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// button click
// Remove your item here
}
});
}
}
Use it in Activity
by
final CustomAdapter sc = new CustomAdapter(this,R.layout.list_row2,ictemp, from, to, 0);
lv.setAdapter(sc)
Hope this helps
来源:https://stackoverflow.com/questions/36619579/how-can-i-set-up-button-onclicklistner-when-using-simple-cursor-adapter