1

ここではまだ完全な初心者です...

サッカーの試合の仕様 (チーム、時間、トーナメントなど) をレンダリングしようとしています。

team.xml を作成しました。

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

<ImageView
    android:id="@+id/teamImageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="2dp"
    android:adjustViewBounds="true"
    android:src="@drawable/sofabold_launcher"
    android:layout_alignWithParentIfMissing="false"
    android:clickable="false"
    android:cropToPadding="true"
    android:contentDescription="@string/teamLogoContentDescription"/>

<TextView
    android:id="@id/teamName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/teamName"
    android:textSize="14sp"
    android:textStyle="bold"
    android:layout_centerVertical="true"
    android:layout_toRightOf="@+id/teamImageView"/>

</RelativeLayout>

team.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="bottom"
android:orientation="vertical" >

<include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/team"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:id="@+id/homeTeam"/>

<include
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        layout="@layout/team"
        android:layout_below="@id/homeTeam"
        android:id="@+id/awayTeam"/>
</RelativeLayout>

そして、teams.xml を含む matchLayout.xml があります。

私の最初の試みは、異なる要素を持つ1つの大きなレイアウトを作成し、それらすべてを私のmatchHolderのIDで参照し、次のようなものを使用してそれらを設定することでした

matchHolder.homeTeamName.setText(match.getHomeTeamName());

populateMatchHolder を次のように変更してみました。

private void populateMatchHolder(View convertView, BaseMatchHolder matchHolder) {
    matchHolder.teams = (RelativeLayout) convertView.findViewById(R.id.teams);
}

そして今、別のRelativeLayout(試合)内のRelativeLayout(チーム)内のTextView(ホームチーム名)を参照する方法がわかりません。

ここでポイントを完全に見逃していますか?どこかに homeTeamName という ID が必要ですか? そしてアウェイチーム名?teamName が 2 回あるだけで十分ではありませんか? team.xml の homeTeam インクルードに 1 回、team.xml の awayTeam インクルードに 1 回。

私が何を意味するのかがある程度明確になることを願っています:-) かなり遅く、疲れています:-/

前もって感謝します

4

2 に答える 2

1

ID でビューを参照する場合、その ID は指定されたスコープ内で一意である必要があります。それ以外の場合、Android は指定された ID を持つ最初のビューのみを返します。

したがって、このようなことを行うとteamsView.findViewById(R.id.teamName)、teams.xml に同じ ID を持つ 2 つのビュー (homeTeam に含まれるものと awayTeam に含まれるもの) があるため、homeTeam レイアウトの teamName ビューのみが取得されます。

解決策: 最初に各チームのチーム レイアウトを取得してから、チーム名を設定します。次に例を示します。

View homeTeam = teamsView.findViewById(R.id.homeTeam);
TextView homeTeamName = homeTeam.findViewById(R.id.teamName);
homeTeamName.setText("blablabal");
//the same for other team

ところで。android:id="@+id/teamName"の代わりに使用 android:id="@id/teamName"

于 2013-08-12T20:08:42.630 に答える
1

その textView の id を使用して参照できます。例えば

<TextView
    android:id="@+id/teamName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/teamName"
    android:textSize="14sp"
    android:textStyle="bold"
    android:layout_centerVertical="true"
    android:layout_toRightOf="@+id/teamImageView"/>

id teamName で参照できます。別のレイアウトで include タグを使用しているため、その親レイアウトの一部になります。

use android:id="@+id/teamName"その特定の id をレイアウトで初めて使用するときはいつでも、原因の代わりにもう 1 つ android:id="@id/teamName"使用します。@+id と共に使用する必要があります。後でレイアウトのどこでも @id を使用して、その特定のビューを参照できます。

于 2013-08-12T20:09:45.683 に答える