是否有可能/建議有一個嵌套的listview?android嵌套列表視圖
即包含在另一個listview的行內的listView?
一個例子就是,我的主要列表顯示的博客文章,然後在每一行中,你必須爲每個崗位的註釋的另一列表視圖(這將是可摺疊)
是否有可能/建議有一個嵌套的listview?android嵌套列表視圖
即包含在另一個listview的行內的listView?
一個例子就是,我的主要列表顯示的博客文章,然後在每一行中,你必須爲每個崗位的註釋的另一列表視圖(這將是可摺疊)
今天我有同樣的問題,所以這是我做過什麼來解決這個問題:
我有一個ListView,具有CustomAdapter,並在customAdapter的getView,我有這樣的事情:
LinearLayout list = (LinearLayout) myView.findViewById(R.id.list_musics);
list.removeAllViews();
for (Music music : albums.get(position).musics) {
View line = li.inflate(R.layout.inside_row, null);
/* nested list's stuff */
list.addView(line);
}
因此,恢復,不可能嵌套到ListViews,但您可以使用LinearLayout在行內創建一個列表並使用代碼填充它。
是你在找什麼ExpandableListView?當然,這僅限於兩層清單(但聽起來像是可以滿足您的需求)。
好吧,事情是,我不希望列表是exapandible ...我只是想顯示一些嵌套的數據...即原來的博客文章,然後2/3最近的評論,也許跟着一個'顯示所有評論'按鈕... – Ben 2010-06-28 22:42:13
這聽起來像一個不同的佈局給我。我將它看作是某種類型的容器(LinearLayout,RelativeLayout,其他),其中包含用於博客文章的TextView,以及用於評論的ListView。只需將前幾個註釋加載到列表視圖中,併爲最後一個加載剩餘註釋的列表項實現一個點擊監聽器。無論如何,我的$ .02。 – kiswa 2010-06-28 23:19:55
好,除了每篇博客文章都會有多篇博文和多篇評論。所以我嘗試了一個測試,通過讓我的行視圖佈局包含一個列表視圖,然後我使用了一個簡單的數組列表適配器w /一些硬編碼的虛擬字符串,以查看是否可以讓它呈現。它呈現,內部列表視圖似乎有滾動條,但該列表不滾動。它看起來像一個黑客入侵的iframe,除了它只顯示第一行,無論我做了什麼。即使height = fill_parent也不行。我的下一個方法是嘗試嵌套在列表中的表視圖。 – Ben 2010-06-29 01:01:59
,你可以做這樣的:
父列表視圖行XML佈局中添加以下表格佈局
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/table_show"
android:background="#beb4b4">
</TableLayout>
那麼你已經做出了與名reply_row.xml孩子列表中選擇佈局
<?xml version="1.0" encoding="utf-8"?>
<TableRow android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tv_reply_row"
android:textColor="#000"/>
</TableRow>
在你父母的ListView適配器getview方法
添加以下代碼:
TableLayout replyContainer = (TableLayout)
// vi is your parent listview inflated view
vi.findViewById(R.id.table_show);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//child listview contents list
String [] replys = {"a","b","c","d"};
for (int i=0;i<replys.length;i++)
{
final View comments = inflater.inflate(R.layout.reply_row, null);
TextView reply_row = (TextView) comments.findViewById(R.id.tv_reply_row) ;
reply_row.setText(replys[i]);
//for changing your tablelayout parameters
TableLayout.LayoutParams tableRowParams=new TableLayout.LayoutParams
(TableLayout.LayoutParams.FILL_PARENT,TableLayout.LayoutParams.WRAP_CONTENT);
int leftMargin=3;
int topMargin=2;
int rightMargin=3;
int bottomMargin=2;
tableRowParams.setMargins(leftMargin, topMargin, rightMargin, bottomMargin);
comments.setLayoutParams(tableRowParams);
TableRow tr = (TableRow) comments;
replyContainer.addView(tr);
}
您最好使用一個ListView,而不是嵌套。嵌套ListView是一種低效率的方式。您的ListView可能無法順利滾動並佔用更多內存。
您可以組織您的數據結構以在一個ListView中顯示嵌套的數據。或者你可以使用這個項目PreOrderTreeAdapter。 在ListView或RecyclerView中顯示嵌套數據很方便。它可以用來使ListView或RecyclerView可摺疊,只是改變提供數據的方式而不是通知適配器。
列表監聽器不能正常工作。任何解決方案 – 2014-04-10 17:01:39
謝謝隊友。好主意啊。 – 2015-03-02 13:31:32
我想在列表中實現列表,但我不能實現.is有解決此問題的任何替代方法嗎?除了Expandable ListView – seon 2017-06-05 06:27:10