1

私は以下のコードを持っていますが、問題はすべての膨張したビューが同じ id を持っていることです (で設定されているplayer_item.xmlように) - 画面を回転させると、それらはすべて同じ値で復元されます。最も簡単な解決策は、これらの ID を削除して Android に自動的に生成させることですが、相対的なレイアウトに配置するために ID が必要なため、これを行うことはできません。どうすればこれを解決できますか?

player_item.xml

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

    <TextView
        android:id="@+id/player_name"
        style="@style/stats_edit_column"
        android:layout_width="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@+id/goals"
        android:gravity="center_vertical" />

    <EditText
        android:id="@+id/goals"
        style="@style/stats_edit_column"
        android:layout_toLeftOf="@+id/assists"
        android:inputType="number"
        android:textSize="@dimen/text_size_normal" />

    <EditText
        android:id="@+id/assists"
        style="@style/stats_edit_column"
        android:layout_alignParentRight="true"
        android:inputType="number"
        android:textSize="@dimen/text_size_normal" />

</RelativeLayout>

コード

for (PlayerStats playerStats : allPlayers) {
    View playerStatsView = getLayoutInflater().inflate(R.layout.player_item, null);

    TextView playerName = (TextView) playerStatsView.findViewById(R.id.player_name);
    playerName.setText(playerStats.getPlayerName());

    EditText goalsEditText = (EditText) playerStatsView.findViewById(R.id.goals);
    goalsEditText.setText(String.valueOf(playerStats.getGoals()));

    EditText assistsEditText = (EditText) playerStatsView.findViewById(R.id.assists);
    assistsEditText.setText(String.valueOf(playerStats.getAssists()));

    editLayout.addView(playerStatsView);
}
4

2 に答える 2

0

すべてのフォームに Bean を作成し、他のアクティビティに移動するときに、すべてのフォーム値を Bean に設定し、Bean 参照を共有設定に保存することをお勧めします。そのため、同じアクティビティに戻ったときに、 bean 、これはフォームの状態を保存するのに役立ちます

役立つことを願っています

于 2012-11-14T13:21:47.647 に答える
0

タグで playerStats への参照を維持するのはどうですか?

for (PlayerStats playerStats : allPlayers) {
    View playerStatsView = getLayoutInflater().inflate(R.layout.player_item, null);

    TextView playerName = (TextView) playerStatsView.findViewById(R.id.player_name);
    playerName.setText(playerStats.getPlayerName());

    EditText goalsEditText = (EditText) playerStatsView.findViewById(R.id.goals);
    goalsEditText.setText(String.valueOf(playerStats.getGoals()));

    EditText assistsEditText = (EditText) playerStatsView.findViewById(R.id.assists);
    assistsEditText.setText(String.valueOf(playerStats.getAssists()));

    playerStatsView.setTag(playerStats);

    editLayout.addView(playerStatsView);

}

getViewForPlayerStatsByTag(PlayerStats playerStats){
    for (int i=0;i<editLayout.getChildCount();i++){
        view = (View)editLayout.getChildAt(i);
        if (view.getTag()==playerStats){return view;}
    }
    return null;
}

getViewForPlayerStatsByTag は、それらの統計の player_item ビュー グループを返します。存在しない場合は null を返します。

于 2012-11-14T14:30:22.990 に答える