我有一个自定义视图类,包含2个textview和一个单独的自定义适配器类。 在自定义视图类中,我有一个方法来设置2个textviews的文本与实现:
public class CompoundView extends LinearLayout {
private TextView versionNameView;
private TextView versionNumberView;
private Context mContext;
public CompoundView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext=context;
TypedArray a = context.obtainStyledAttributes(attrs,R.styleable.ColorOptionsView, 0, 0);
String titleText = a.getString(R.styleable.ColorOptionsView_titleText);
int valueColor = a.getColor(R.styleable.ColorOptionsView_valueColor,getResources().getColor(android.R.color.holo_blue_light));
a.recycle();
setOrientation(LinearLayout.VERTICAL);
setGravity(Gravity.CENTER_VERTICAL);
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rootView = inflater.inflate(R.layout.view_color_options, this, true);
versionNameView = (TextView) this.findViewById(R.id.list_item_title);
versionNumberView = (TextView) this.findViewById(R.id.list_item_content);
}
public CompoundView(Context context) {
this(context, null);
}
public void setTexts(String text1,String text2) {
versionNameView.setText(text1);
versionNumberView.setText(text2);
}
}
在我的自定义适配器中,在重写的getView()方法部分中,我实现了:
...
CompoundView customView = new CompoundView(yContext);
customView.setTexts("Test1","Test2");
...
当我运行应用程序时,UI中的文本显示其原始值(最初以XML格式声明的值而不是以编程方式声明的值)。
但是,如果我尝试在自定义视图中执行versionNameView.getText()
和versionNumberView.getText()
,则logcat将显示正确更新的值。
那么为了让更新的文本在UI中正确显示,我应该采取哪些步骤?
答案 0 :(得分:0)
我设法让它正常工作。
我应该使用操作findViewById()
来引用XML文件中现有的创建自定义视图,而不是创建视图对象。