Android如何用数据填充布局

时间:2013-11-06 07:53:22

标签: android xml android-layout

我有这样的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:orientation="horizontal"
          android:layout_width="match_parent"
          android:layout_height="match_parent">

<me.amasawa.studchat.views.MessageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Test"
        android:layout_gravity="center" android:singleLine="false"
        android:autoText="false" android:background="@drawable/text_view_message" android:padding="1dp"
        android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="2dp"/>
<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Это очень длинное сообщение для проверки разметки. Ну как?"
        android:layout_gravity="center"
        android:layout_toRightOf="@+id/textView" android:layout_alignBaseline="@+id/textView"
        android:layout_marginLeft="5dp"/>
</RelativeLayout>

我想多次充气。如何识别第二个TextView以填充数据?也许是这样的:

RelativeLayout tmp = getLayoutInflater().inflate(R.layout.message, null);
TextView tv = (TextView) tmp.findViewByID(...);
tv.setText(data);

但是id对于所有应用都是唯一的。在这种情况下我应该使用什么?

3 个答案:

答案 0 :(得分:0)

当您为视图充气时,您将拥有一个父视图。在这里,比如说parentView并说上面textview的id是textview然后你可以运行以下代码来识别TextView,如下所示: -

TextView textView = (TextView)parentView.findViewById(R.id.textview);
textView.setText("Your desiredvalue");

答案 1 :(得分:0)

如果在列表视图中使用它,则应在getView()方法中调用findViewById()

private String[] data={"string1","string2","string3"}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
    convertView.findViewById(R.id.textView).setText(data[position]);
}

您的输出列表看起来像

string1
string2
string3

答案 2 :(得分:0)

您可以使用其父ID访问该第二个文本视图。

首先,您需要为该textview定义id。当您将其包含在主布局中时,还需要定义其父ID。

然后您可以通过该ID访问该父级。

使用这个膨胀的父母,你可以使用parentview.findviewbyid(R.id.textviewid);

给孩子充气