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传的值正确么

    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站