【发布时间】:2017-08-11 03:11:40
【问题描述】:
当按下该行的按钮时,我想对该行执行删除操作。当我自己传递 id 时,删除查询工作正常。我在获取 onclick 方法中的行 ID 时遇到问题,请帮助
这是我的代码
package com.example.vasu.virtualfridge;
import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class ContactImageAdapter extends ArrayAdapter<Item>{
Context context;
int layoutResourceId;
// BcardImage data[] = null;
ArrayList<Item> data=new ArrayList<Item>();
public ContactImageAdapter(Context context, int layoutResourceId, ArrayList<Item> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(final int position, final View convertView, ViewGroup parent) {
View row = convertView;
ImageHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ImageHolder();
holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);
holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
holder.b = (Button)row.findViewById(R.id.button2);
row.setTag(holder);
}
else
{
holder = (ImageHolder)row.getTag();
}
Item picture = data.get(position);
holder.txtTitle.setText(picture._name);
//convert byte to bitmap take from contact class
byte[] outImage=picture._Image;
ByteArrayInputStream imageStream = new ByteArrayInputStream(outImage);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
holder.imgIcon.setImageBitmap(theImage);
holder.b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int id = getPosition(getItem(position));
//Object toRemove = data.get(id);
DatabaseHandler db = new DatabaseHandler(context);
db.deleteContact(1);
data.remove(position);
notifyDataSetChanged();
Toast.makeText(context,"Removed",Toast.LENGTH_LONG).show();
}
});
return row;
}
static class ImageHolder
{
ImageView imgIcon;
TextView txtTitle;
Button b;
}
}
【问题讨论】:
-
进一步解释您的问题。你有什么错误吗?解决问题的确切方法或确切方法
-
请尝试在问题标题中描述您的关键问题,然后在描述中进一步描述。
-
在您的 ArrayList 中添加 db 表中的行的 id,当您填充它时。您不显示此 ID,而是显示其在数组中的对象(项目)的一部分,例如 (db.deleteContact(data.get(dbrowid));)
标签: java android sqlite listview android-studio