删除BaseAdapter中删除的值始终为最后值

时间:2017-07-15 13:29:33

标签: android listview arraylist baseadapter notifydatasetchanged

我为My Model类创建了一个ListView并成功显示它。

我已经成功地从ListView的ListView onItemClickListener中删除了值/ raw。

没关系,但是,我的ListView还包含一个ImageView,我必须在点击该ImageView时删除一行。

所以,我已经使用了一个BaseAdapter并在我的BaseAdapter中单击了我的ImageView,如下所示:

我的适配器类如下:

public class MyAdapter extends BaseAdapter {

    private ArrayList<ModelClass> mArrayListModel;
    private LayoutInflater mInflator;
    private Context mContext;

    public MyAdapter(Context mContext, ArrayList<ModelClass> mArrayListModel) {
        this.mContext = mContext;
        this.mArrayListModel = mArrayListModel;
    }

    @Override
    public int getCount() {
        return mArrayListModel.size();
    }

    @Override
    public Object getItem(int position) {
        return mArrayListModel.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder view = null;
        if (convertView == null) {
            view = new ViewHolder();
            mInflator = LayoutInflater.from(mContext);
            convertView = mInflator.inflate(R.layout.custom_layout, parent, false);

            view.textName = (TextView) convertView.findViewById(R.id.txtName);
            view.textAddress = (TextView) convertView.findViewById(R.id.txtAddress);
            // view.btnShow = (Button) convertView.findViewById(R.id.btnShow);
            view.imgDelete=(ImageView) convertView.findViewById(R.id.imgDelete);
            view.textName.setText("" + mArrayListModel.get(position).getStrName());
            view.textAddress.setText("" + mArrayListModel.get(position).getStrAddress());

            convertView.setTag(view);
            view.imgDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(mContext, ""+mArrayListModel.get(position).getStrName(), Toast.LENGTH_SHORT).show();
                    mArrayListModel.remove(position);
                    notifyDataSetChanged();
                }
            });
        } else {
            view = (ViewHolder) convertView.getTag();
        }
        return convertView;
    }

    class ViewHolder {
        TextView textName, textAddress;
        //Button btnShow;
        ImageView imgDelete;
    }

}

我将删除如下:

view.imgDelete.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(mContext, ""+mArrayListModel.get(position).getStrName(), Toast.LENGTH_SHORT).show();
        mArrayListModel.remove(position);
        notifyDataSetChanged();
    }
});

问题在于删除项目,当我点击ImageView时,它只从列表视图中删除最后一个值..最后一个位置。我认为这与我的立场有关。

你会请。检查一下,让我知道可能是什么问题?

感谢。

0 个答案:

没有答案