这个问题 折腾了好久 还是没解决....
问题现象是这样的,我点击某个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 不久 也许范了一些基础问题
当然,各位大神 可以提议一些别的方法,也能达到我要的效果