我有一个列表视图,行布局包含一些文本视图和一个图像视图(删除图标)。此映像视图具有xml属性:android:onClick="deleteItem"现在如何获得按下删除图标的列表行的位置,并从listview中删除该行?
发布于 2014-07-20 17:27:43
您可以通过使用侦听器来进行简单得多的工作:
final ListView listView = findViewById(R.id.listView); // your listview's id here
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        listView.removeViewAt(position);
    }
});编辑:
考虑到你最近的评论,这是你如何做到这一点的一种方法:
ListView mListView;
public class MyAdapter extends ArrayAdapter<String> {
    Context context;
    int layoutRes;
    LayoutInflater inflater;
    public MyAdapter(Context context, int resource) {
        super(context, resource);
        this.context = context;
        this.layoutRes = resource;
        this.inflater = LayoutInflater.from(context);
    }
    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            convertView = inflater.inflate(layoutRes, parent, false);
        }
        ImageView imageView = convertView.findViewById(R.id.myImage);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mListView.removeViewAt(position);
            }
        });
        return convertView;
    }
}创建类似于这个MyAdapter适配器=新的MyAdapter( this,R.layout.myLayout)的适配器;
适配器getView方法返回列表中特定位置的视图,然后为图像指定一个侦听器,当触发该侦听器时,该侦听器将删除图像所在的列表项。
通过使用ViewHolder类,有一种稍微好一些的实现方式。如果你感兴趣的话:How to get the parent view of a button within a list adapter?
发布于 2014-07-20 17:28:19
有两个选项:一个在列表中实现setOnItemClickListener
listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int position,
                    long id) {
                //action to delete item from position.
            }
        });另一个选项是当您单击需要在适配器中实现setOnClickListener的图标时。
iviIconDelete.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                //delete the item
            }
        });发布于 2014-07-20 17:47:58
您可以使用自定义适配器,并在getView方法中添加OnClickListener以删除图标,如下所示
    delIcon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            list.remove(position); // remove the item from the data list 
            notifyDataSetChanged();
        }
    });https://stackoverflow.com/questions/24853017
复制相似问题