我在向容器添加自定义视图时遇到了问题。我正在做针。容器是以编程方式添加的多个视图。在这种情况下,键入符号时填充的圆圈。但是为什么每次输入符号都会填充应该的圆圈,以及 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);
}}