上次创建的视图会对其他类似视图做出反应

时间:2018-06-08 16:14:49

标签: android view

我在向容器添加自定义视图时遇到了问题。我正在做针。容器是以编程方式添加的多个视图。在这种情况下,键入符号时填充的圆圈。但是为什么每次输入符号都会填充应该的圆圈,以及 LAST CIRCLE 。 在任何位置输入时都会填写。为什么它不应该对它做出反应呢? 见以下图片

public void setPinLength(int pinLength) {
    Log.d("Item", "pinLength = " + pinLength);
    this.pinLength = pinLength;

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    viewContainer.removeAllViews();

    List<T> temp = new ArrayList<>(this.pinLength);
    for (int i = 0; i < this.pinLength; i++) {
        T view;
        Log.d("Item", "i = " + i + "views.size = " + views.size());
        if (i < views.size()) {
            view = views.get(i);
        } else {
            view = getNewItem();
            view.setView(inflater.inflate(getItemView(), viewContainer, false));
        }
        viewContainer.addView(view.getView());
        temp.add(view);
    }

    views.clear();
    views.addAll(temp);
}

public void setPin(String pincode) {
        clearPinView();
        List<T> views = getViews();
        for (int i = 0; i < pincode.length(); i++) {
            views.get(i).fill();
        }
    }

public void clearPinView() {
    for (T view : getViews())
        view.clear();
}

此类包含ImageView

public class ImageItem extends BaseViewItem {

private ImageView imageView;
private Drawable drawable;

public ImageItem(Context context, Drawable drawable) {
    this.imageView = new ImageView(context);

    /*this.imageView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    this.imageView.setImageDrawable(drawable);*/
    this.drawable = drawable;
}

@Override
protected void fill() {
    Log.d("Item", "setSelected " + imageView);
    imageView.setSelected(true);
    Log.d("Item", "setView id = " + imageView.getId());
}

@Override
protected void clear() {
    imageView.setSelected(false);
}

@Override
protected View getView() {
    return imageView;
}

@Override
protected void setView(View view) {
    imageView = (ImageView) view;
    imageView.setImageDrawable(drawable);
}}

Pincode image

0 个答案:

没有答案