qq_34242806 2017-03-06 12:26 采纳率: 0%
浏览 1267

Android新手急求:ListView点击删除按钮时,总是最后一个item被删除

如题,我的ListView的每个item都有一个删除按钮,但是每次点击按钮后都是删除了最后一个item。

   调试后position是正确的,索引是没有问题的,每次删除的都是正确的位置,而且每次item一删除就调用notifyDataSetChanged()去刷新,这个问题困扰好几天了…麻烦大神帮帮忙。

        另外我这个MyAdapter类是写在MainActivity类里面的,我是有添加到arr里的,纯粹是为了方便……我不知道是不是这个引起的问题。

        public class MyAdapter  extends BaseAdapter {
    private Context context;
    private LayoutInflater inflater;
    public ArrayList<String> arr;
    public MyAdapter(Context context) {
        super();
        this.context = context;
        inflater = LayoutInflater.from(context);
        arr = new ArrayList<String>();
    }
    @Override
    public int getCount() {
        return arr.size();
    }
    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }
    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return arg0;
    }
    @Override
    public View getView(final int position, View convertView, ViewGroup arg2) {
        // TODO Auto-generated method stub
        ViewHolder viewHolder = null;
        if(convertView == null){
            viewHolder = new ViewHolder();
            convertView = inflater.inflate(R.layout.mission_item, null);

            viewHolder.mission_name = (TextView) convertView.findViewById(R.id.pro_name);
            viewHolder.mission_add = (TextView) convertView.findViewById(R.id.pro_add);
            viewHolder.mission_phone = (TextView) convertView.findViewById(R.id.pro_phone);
            viewHolder.del = (Button) convertView.findViewById(R.id.del);
            SharedPreferences shared_mission = getSharedPreferences("mission",
                    Activity.MODE_PRIVATE);
            viewHolder.mission_name.setText(shared_mission.getString("name", ""));
            viewHolder.mission_add.setText(shared_mission.getString("address", ""));
            viewHolder.mission_phone.setText(shared_mission.getString("phone", ""));
            convertView.setTag(viewHolder);
        }else
        {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.del.setTag(position);
        viewHolder.del.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                arr.remove(position);
                mission_adapter.notifyDataSetChanged();
            }
        });
        listview.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, final int arg2,
                                    long arg3) {             
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, MissionInfo.class);
                startActivity(intent);
            }
        });
        return convertView;
    }
     class ViewHolder
    {
        //任务界面
        TextView mission_name,mission_add,mission_phone;
        Button del;
    }
}
  • 写回答

6条回答 默认 最新

  • threenewbee 2017-03-06 15:36
    关注

    调试position传的值正确么

    评论

报告相同问题?

悬赏问题

  • ¥15 安装svn网络有问题怎么办
  • ¥15 Python爬取指定微博话题下的内容,保存为txt
  • ¥15 vue2登录调用后端接口如何实现
  • ¥65 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥15 latex怎么处理论文引理引用参考文献