setOnItemClickListner影响ListView的多个视图?

时间:2015-08-06 09:34:32

标签: android android-arrayadapter

ListView包含多个字符串。

  1. 适配器的数据源是字符串列表
  2. 适配器的资源是textview

    view.appointmentTime.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    
                ((TextView) parent.getChildAt(lastClicked)).setTextColor(Color.parseColor("#000000"));
    
                ((TextView) parent.getChildAt(lastClicked)).setTextSize(18f);
    
                ((TextView) view).setTextColor(Color.parseColor("#00BBE4"));
    
                ((TextView) view).setTextSize(22f);
    
                lastClicked = position;
    
                getBookAppointment().setApptTime((getLong_timings().get(position) / 1000));
    
            }
    
        });
    

    我的初始适配器是:

    public class AppointmentTimingAdapter extends ArrayAdapter {     上下文上下文;

    public AppointmentTimingAdapter(Context context, int resource, List<AppointmentTime> objects) {
        super(context, resource, objects);
        this.context = context;
    }
    
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        return AppointmentTimeView.newInstance((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)
                , parent, ScheduleView.getTimings().get(position));
    }
    

    }

1 个答案:

答案 0 :(得分:1)

修改:不再像查看回收问题 - convertView实施中的getView()参数(潜在回收的视图)似乎被忽略了。

如果没有关于您所看到的症状的任何信息会让您认为存在错误,我会怀疑您已经被View回收了。

您在单击的视图上设置这些属性,然后滚动,突然另一个视图看起来已被点击,即使它没有被点击。该视图已被重复使用或回收。

您可以通过不直接在ListView中修改视图来避免这些错误。修改数据集/存储列表中的“选定”项并刷新ListView(adapter.notifyDataSetChanged()),并使用选定的项列表确定何时应用不同的样式。