当我更改第一个项目组件时,最后一个项目生效

时间:2013-11-23 13:06:06

标签: android listview scroll row

我有一个包含文本视图和3个可单击图像视图的自定义行。 onClick在ImageView中的任何一个上,这个Image变为另一个。

我的问题是,当我点击第1行上的Image1时,图像也会在第1行和第9行中都发生变化,当我点击第2行时,图像也会在第2行和第10行中更改。我不知道为什么。

但我认为这是关于滚动的。

我的适配器中的getView()

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (vi == null) {
            vi = inflater.inflate(R.layout.comprow, null);
    }
    TextView text = (TextView) vi.findViewById(R.id.name);
    text.setText(data.get(position));

    return vi;
}

这是第一个ImageView的OnClick函数         public void one(View v){

    RelativeLayout row = (RelativeLayout)v.getParent();
    ImageView im1 = (ImageView) row.findViewById(R.id.one);
    ImageView im2 = (ImageView) row.findViewById(R.id.two);
    ImageView im3 = (ImageView)row.findViewById(R.id.three);

    im1.setImageResource(R.drawable.c0);    
    im2.setImageResource(R.drawable.b1);
    im3.setImageResource(R.drawable.b2);

    simpleAdpt.notifyDataSetChanged();
}

1 个答案:

答案 0 :(得分:0)

如果你不使用id,你在所有行中改变了重复,因为你使用了position,那么你必须为getView()中创建的每一行设置id,现在如果你有一些选择,你可以处理大小为list的整数数组,默认情况下等于0然后如果按一行更改行的值,则在show image中检查该行的值,如果为零,则默认为let,否则检查你想要展示的价值和选择的图像,我希望你理解我的话