【问题标题】:Delete selected element from my gridView从我的 gridView 中删除选定的元素
【发布时间】:2020-07-06 22:34:29
【问题描述】:

如何删除我的 gridView 列表中的选定项目? 现在我删除了我最后添加的元素。

 @Override
        public void onClick(View view) {
            remove(personItems);
            notifyDataSetChanged();
        }

我试着这样做

public View getView(final int position, View convertView, ViewGroup parent) {
    personItems = getItem(position);
...
public void onClick(View view) {
            personItems.remove(position);
            notifyDataSetChanged();
        }

但是这样我不能从我的网格视图中删除元素

我的适配器的完整代码

public class CustomAdapter extends ArrayAdapter<PersonItems> {

PersonItems personItems;

static class ViewHolder {
    TextView member_name;
    ImageView profile_pic;
}

public CustomAdapter(Context context, ArrayList<PersonItems> users) {
    super(context, R.layout.list_item, users);
}


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

    personItems = getItem(position);
    ViewHolder viewHolder;

    if (convertView == null) {
        viewHolder = new ViewHolder();
        LayoutInflater inflater = LayoutInflater.from(getContext());
        convertView = inflater.inflate(R.layout.list_item, parent, false);
        viewHolder.member_name = (TextView) convertView.findViewById(R.id.member_name);
        viewHolder.profile_pic = (ImageView) convertView.findViewById(R.id.profile_pic);
        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }
    viewHolder.member_name.setText(personItems.name);
    viewHolder.profile_pic.setImageResource(setImage());

    Button buttonDelete = (Button) convertView.findViewById(R.id.buttonDelete);
    buttonDelete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            remove(personItems);
            notifyDataSetChanged();
        }
    });
    return convertView;
}

public int setImage() {
    switch (personItems.getName()) {
        case Names.AII:
            return R.drawable.profile;
        case Names.VdV:
            return R.drawable.vdm;
    }
    return 0;
}

}

【问题讨论】:

  • 获取选中项的位置和关联视图的id
  • @gaurav 更新问题
  • 能否分享完整的适配器代码
  • 你能分享你遇到的错误吗
  • @PhanVanLinh 完成

标签: java android gridview


【解决方案1】:

在您的适配器的构造函数中从您的 Activity 接收列表视图:

MyCustomAdapter adapter = new MyCustomAdapter(context, mylist);

您的适配器的构造函数应该如下所示:

public MyCustomAdapter (Context context, List<Object> objectsList){
    this.objectsList = objectsList;
    this.context = context;    
}

现在在您的 getView() 方法中:

Button buttonDelete = (Button) convertView.findViewById(R.id.buttonDelete);
buttonDelete.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        objectsList.remove(position);
        notifyDataSetChanged();
    }
});

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    获取当前网格视图的位置并执行删除方法

    【讨论】:

    • 使用 int postion=getAdapterPosition(); 获取您当前的适配器位置
    猜你喜欢
    • 2023-03-05
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    相关资源
    最近更新 更多