重新使用ListView内的ListView(或适配器内的适配器)

时间:2014-12-15 13:31:45

标签: android listview xamarin scrollview baseadapter

我在stackover中听说可以将listview放在scrollview中的listview或listview中,因此可以在适配器中放置一个适配器。内部可滚动元素将失去scroll属性。 但重用呢? 如果它是listview中的listview,并且都有自己的listadapter或派生的基础......那么它们是否都可以重用自己的项目?或者只是其中一个?

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <Button
            android:text="Artists"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:visibility="visible" />
        <ListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <Button
            android:text="Albums"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <ListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <Button
            android:text="Tracks"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <ListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <Button
            android:text="Playlists"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <ListView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
</ListView>
</FrameLayout>

2 个答案:

答案 0 :(得分:2)

我猜你需要的是由commonsguy的Mergeadapterhttps://github.com/commonsguy/cwac-merge实现的。

这需要AdaptersViews,并将其显示为合并后的Listview

  

MergeAdapter接受适配器和视图的混合,并将它们显示为   一个连续的整体到它倾注的任何ListView。这是   适用于您拥有多个数据源的情况,或者您拥有多个数据源的情况   少数普通视图与数据列表等混合在一起。

     

只需创建一个MergeAdapter并调用addAdapter(),addView()或   addViews()(后者接受List),然后附加你的适配器   到ListView。

     

还有MergeSpinnerAdapter用于Spinner小部件。

答案 1 :(得分:1)

This是我为我的案例选择的,我需要RecyclerView内的水平ListView

我们的想法是将内部视图(例如RecyclerView)视为您的ListView项之一:

  • 在ViewHolder中创建您的RecyclerView
  • findViewById()&amp;在LinearLayoutManagergetView()
  • 中设置其if (convertView == null)
  • getView()
  • 中设置RecyclerView的适配器
  • 控制其适配器中的RecyclerView

希望它对你有所帮助。