setText()方法在自定义视图中不显示正确的文本[ANDROID]

时间:2016-05-29 10:42:44

标签: java android user-interface view

我有一个自定义视图类,包含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中正确显示,我应该采取哪些步骤?

1 个答案:

答案 0 :(得分:0)

我设法让它正常工作。 我应该使用操作findViewById()来引用XML文件中现有的创建自定义视图,而不是创建视图对象。