0

我有这样的布局:

<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 对于所有应用程序都是唯一的。在这种情况下我应该使用什么?

4

3 回答 3

1

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

TextView textView = (TextView)parentView.findViewById(R.id.textview);
textView.setText("Your desiredvalue");
于 2013-11-06T07:58:02.683 回答
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
于 2013-11-06T07:58:15.550 回答
0

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

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

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

使用那个膨胀的父母,你可以使用它来膨胀它的孩子parentview.findviewbyid(R.id.textviewid)

于 2013-11-06T07:58:16.220 回答