【问题标题】:When I change first item components,Last item is effected当我更改第一项组件时,最后一项生效
【发布时间】:2013-11-24 04:52:53
【问题描述】:

我有一个自定义行,其中包含一个文本视图和 3 个可点击的图像视图。 onClick 任意一个 ImageView 这个 Image 改变为另一个。

我的问题是,当我单击 row1 上的 Image1 时,图像在 row1 和 row9 中也发生了变化,而当我单击 row2 时,图像在 row2 和 row10 中也发生了变化......等等。我不知道为什么。

但我认为它与滚动有关。

这是我的适配器中的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();
}

【问题讨论】:

    标签: android listview scroll row


    【解决方案1】:

    当您不使用 id 时,由于您使用了位置,因此您在所有行中更改了重复,那么您必须将 id 设置为在 getView() 中创建的每一行,现在如果您有几个选择,您可以处理具有列表大小的整数数组,默认情况下等于 0,然后如果您按一行,则行的值已更改,然后在显示图像中检查该行的值,如果为零则默认输入,否则检查该值并选择您要显示的图像,希望您能理解我的话

    【讨论】:

    • 很遗憾我无法得到您的解决方案
    • 是的,我知道了。但我认为它不适合我。在我的应用程序中,我禁用了行选择(当用户选择特定行时我什么都不做)当他/她单击行中图像视图的任何图像时,我会进行一些修改。是的,我的图片数量有限,每行只有 3 张图片。点击任何一张,我将其替换为另一张。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 2015-12-11
    相关资源
    最近更新 更多