首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >单击“视图”后从列表视图中删除单个项目

单击“视图”后从列表视图中删除单个项目
EN

Stack Overflow用户
提问于 2014-07-20 17:23:03
回答 3查看 7.6K关注 0票数 0

我有一个列表视图,行布局包含一些文本视图和一个图像视图(删除图标)。此映像视图具有xml属性:android:onClick="deleteItem"现在如何获得按下删除图标的列表行的位置,并从listview中删除该行?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-07-20 17:27:43

您可以通过使用侦听器来进行简单得多的工作:

代码语言:javascript
运行
复制
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);
    }
});

编辑:

考虑到你最近的评论,这是你如何做到这一点的一种方法:

代码语言:javascript
运行
复制
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?

票数 0
EN

Stack Overflow用户

发布于 2014-07-20 17:28:19

有两个选项:一个在列表中实现setOnItemClickListener

代码语言:javascript
运行
复制
listView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> adapter, View view, int position,
                    long id) {
                //action to delete item from position.

            }
        });

另一个选项是当您单击需要在适配器中实现setOnClickListener的图标时。

代码语言:javascript
运行
复制
iviIconDelete.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                //delete the item

            }
        });
票数 0
EN

Stack Overflow用户

发布于 2014-07-20 17:47:58

您可以使用自定义适配器,并在getView方法中添加OnClickListener以删除图标,如下所示

代码语言:javascript
运行
复制
    delIcon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            list.remove(position); // remove the item from the data list 
            notifyDataSetChanged();
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24853017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档