如何使用里面的按钮从列表视图中删除一个项目?

Posted

技术标签:

【中文标题】如何使用里面的按钮从列表视图中删除一个项目?【英文标题】:How do I remove an item from a listview using the button inside? 【发布时间】:2015-02-17 00:30:35 【问题描述】:

我查看了很多示例并设法做到了这一点,但我仍然无法获得从数组中删除项目的按钮。如何正确使用 remove(position)?

公共类适配器扩展 ArrayAdapter

public adapter(Context context, ArrayList<User> users) 

    super(context, 0, users);

@Override
public View getView(final int position, View convertView, ViewGroup parent) 


    User user = getItem(position);

    if (convertView == null) 
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.activity_main, parent, false);
    

    TextView question = (TextView) convertView.findViewById(R.id.question);
    TextView answer = (TextView) convertView.findViewById(R.id.answer);

    question.setText(user.name);
    answer.setText(user.hometown);

    ImageButton remove = (ImageButton) convertView.findViewById(R.id.removeButton);

    remove.setTag(position);

    remove.setOnClickListener(new View.OnClickListener()
        @Override
        public void onClick(View view) 


            notifyDataSetChanged();
        );

    return convertView;


    

用户列表

public class User 
public String name;
public String hometown;

public User(String name, String hometown) 
    this.name = name;
    this.hometown = hometown;


public static ArrayList<User> getUsers() 
    ArrayList<User> users = new ArrayList<>();
    users.add(new User("Hi", "hi"));
    users.add(new User("Marla", "San Francisco"));
    users.add(new User("Sarah", "San Marco"));
    return users;

【问题讨论】:

你的日志猫在哪里??? 我没有保留日志,但是在更改了一些内容之后,我认为这是由于错误地使用了 remove(position)。我如何正确实现这一点? 【参考方案1】:
    将位置作为 TAG 分配给 GetView 中的按钮 按钮的 OnClick,从 ArrayList 中删除该位置项 要刷新ListView UI,调用adapter.notifyDataSetChanged()方法

这对你有帮助, Delete a ListItem by clicking the ImageView within the ListItem

【讨论】:

【参考方案2】:

你有 ArrayList 用户

在特定事件上删除用户arrayList的对象,然后简单地调用dapter.notifyDataSetChanged()方法。

【讨论】:

我之前试过 users.remove(position) 但没用【参考方案3】:
    在您的适配器类中添加此方法。public void removeItem(int position) arrayList.remove(位置); notifyDataSetChanged(); 从类似按钮的 onClick 调用上述方法。remove.setOnClickListener(new View.OnClickListener() @Override public void onClick(查看视图) 删除项目(位置); ); 参考链接:Listview delete item and Refresh - android

【讨论】:

以上是关于如何使用里面的按钮从列表视图中删除一个项目?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中删除列表视图顶部的项目?

如何使用特定项目删除按钮删除列表视图中的项目?

单击 CursorAdapter 中的按钮时如何在列表视图项目行中执行更新和删除操作

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

如何使用按钮从集合视图(网格视图)切换到表格视图(列表视图)?

如何从列表视图按钮单击将多个数据添加到数组列表?