android listview适配器进行监听组件出现问题


这个问题 折腾了好久 还是没解决....
问题现象是这样的,我点击某个item的textview ,要进行修改,然后导致所有item的这个textview都变成修改的值了

然后就去打断点,发现哪个item判断没错,然后去修改对应对象属性的时候,发现的确这个list里面所有对象的这个属性都被修改了

我的监听是写在适配器里面的,然后在getview里面对每个item的组件进行setTage,这样触发的时候就知道 是哪个item,然后根据组件id即view.getID()进行获取,就知道是哪个item的组件 
 现在贴上代码 
适配器里的getview方法
public View getView(int position, View convertView, ViewGroup viewGroup) {
        if (convertView == null) {
            holder = new ViewHolder();
            //conLayout=findViewById(R.id.controller_title_layout);
            monInflater = (LayoutInflater) monContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);//获得一个layoutInflater
            convertView = monInflater.inflate(R.layout.list_table_timeset, null); //将布局绑定到View
            holder.time_sel_beign = (TextView) convertView.findViewById(R.id.time_sel_beign);
            holder.time_sel_end = (TextView) convertView.findViewById(R.id.time_sel_end);
            holder.timeset_del = (ImageButton) convertView.findViewById(R.id.timeset_del);
            holder.time_switch = (ImageButton) convertView.findViewById(R.id.time_switch);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();// 取出viewHolder对象
        }
        // 设置textview显示的内容
        timePeriodCtr = timePeriodCtrList.getTimePeriodCtrs().get(position);
        holder.time_sel_beign.setText(timePeriodCtr.getBeginTime());
        holder.time_sel_end.setText(timePeriodCtr.getEndTime());
        if (timePeriodCtr.getStatus().equals("1")) {
            holder.time_switch.setBackgroundResource(R.drawable.time_on);
        } else {
            holder.time_switch.setBackgroundResource(R.drawable.time_off);
        }
        holder.timeset_del.setOnClickListener(this);
        holder.timeset_del.setTag(position);
        holder.time_switch.setOnClickListener(this);
        holder.time_switch.setTag(position);
        holder.time_sel_beign.setOnClickListener(this);
        holder.time_sel_beign.setTag(position);
        holder.time_sel_end.setOnClickListener(this);
        holder.time_sel_end.setTag(position);
        return convertView;
    }

我的监听方法 贴上一部分监听代码 
   @Override
    public void onClick(View v) {
        position=(int)v.getTag();
        timePeriodCtr = (BeanTimePeriodCtr) getItem(position);
        switch (v.getId()) {
            case R.id.time_sel_beign:
                new AlertDialog.Builder(monContext)
                        .setTitle("请选择开启的时间")
                        .setView(gettimepickerview())
                        .setPositiveButton("确定",
                                new DialogInterface.OnClickListener() {
                                    @Override
                                    public void onClick(DialogInterface dialog,
                                                        int which) {
                                        //holder.time_sel_beign.setText(wheelMain.getTime());
                                        timePeriodCtrList.getTimePeriodCtrs().get(position).setBeginTime("1");
                                        notifyDataSetChanged();
                                        Log.e("time",wheelMain.getTime());
                                    }
                                }).setNegativeButton("取消", null).show();
                break;}

 希望大神们帮忙啊  小弟也是初学android 不久 也许范了一些基础问题

当然,各位大神 可以提议一些别的方法,也能达到我要的效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值