我有一个名为
的模板布局文件template_dashboard_item.xml
其内容为
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/DashboardItemContainer">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" style="@style/DashboardItem">
<TextView style="@style/DashboardItemText" android:text="Application for Jane Doe has been added" android:textColor="@color/black" />
<TextView style="@style/DashboardItemText" android:text="Added today at ..." android:layout_marginTop="10dp" />
</LinearLayout>
我正在使用这个模板布局,通过膨胀并将其插入到像这样的视图中
LinearLayout item = (LinearLayout) getLayoutInflater().inflate(R.layout.template_dashboard_item, items, false);
items.addView(item);
就像那样,我多次插入它。
我想知道,在我插入之前(addView)如何更新那里的TextViews(文本)?
换句话说,如何获取TextView的对象? (我想在这种情况下findViewById不起作用。)
答案 0 :(得分:1)
为什么无法在XML中的两个文本视图中添加ID并使用TextView text = item.findViewById(R.id.your_id);
答案 1 :(得分:1)
您可以为TextView
分配ID并使用item.findViewById
进行检索,或使用ViewGroup.getChildAt(int index)
for (int i = 0 i < item.getChildCount(); i++) {
View view = item.getChildAt(i);
if (view instanceof TextView) {
}
}
答案 2 :(得分:1)
为什么不创建像这样的自定义布局
public class CustomView extends RelativeLayout {
private TextView header;
private TextView description;
public Card(Context context) {
super(context);
init();
}
public Card(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public Card(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
private void init() {
inflate(getContext(), R.layout.view_layout, this);
this.header = (TextView) findViewById(R.id.header);
this.description = (TextView) findViewById(R.id.description);
}
public void setHeader(String header) {
this.header.setText(header);
}
public void setDescription(String description) {
this.description.setText(description);
}
}
并添加布局
LinearLayout items = (LinearLayout) getLayoutInflater().inflate(R.layout.template_dashboard_item, items, false);
CustomView item = new CustomView(this);
item.setHeader("xxx);
item.setDescription("yyy");
items.addView(item);