を図示していない私は、この形式のUIコンポーネントを有する:アンドロイド:動的に生成されたビューを加えなく
<RelativeLayout
android:id="@+id/item_lists"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="1"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<TextView
android:id="@+id/first_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible"
android:text="First List"/>
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/first_list"
android:divider="@android:color/transparent"
android:dividerHeight="10dp" >
</ListView>
</RelativeLayout>
外側RelativeLayoutを動的に追加するためのロジック、私は動的ビューを生成し、中に注入する予定のラッパーでありますビュー(テキストのタイトルと別のリストビュー):
private void populateLists() {
View pre = firstList; // this points to the list view "list_view"
if(!titleMap.isEmpty()) { // titleMap is a hashmap that maps titles to lists
Set<String> titles = getTitles();
for(String title : titles){
List<Item> li = titleMap.get(title);
TextView tag = generateTitleTextView(title, pre);
ListView lv = generateListView(li, tag);
sceneLists.addView(tag);
sceneLists.addView(lv);
pre = lv;
}
}
}
generateTitleTextView(String title, View pre)
とgenerateListView(List<Item> list, View pre)
は、ビューを生成する2つの方法ですと
layoutParams.addRule(RelativeLayout.BELOW, pre.getId());
コードは例外なく実行できますが、生成されたビューはページに表示されません。何が問題なのでしょうか?前もって感謝します!
編集:generateTitleTextViewのコード、generateListViewは同様の唯一の違いは、それはあなたがリストビューviewId
を生成するにはどうすればよい
private TextView generateTitleTextView(String title, View pre) {
TextView tag = new TextView(this);
tag.setId(generateRandomViewId());// generates a random int as Id
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
layoutParams.addRule(RelativeLayout.BELOW, pre.getId());
tag.setLayoutParams(layoutParams);
tag.setText(title);
return tag;
}
私はランダムなUUIDのハッシュコードを使用してのviewId生成します。それは問題ではないと思いますか?私はあなたの提案ごとにデバッグを試みます、ありがとう! –
私はあなたが提案したコードは、View.generateViewId()の実装のロジックを使用していると思う、それは私の状況に役立たなかった。 –