2016-12-27 46 views
0

我想在scrollview或nestedscroll視圖內部實現listview,但我的列表不能正確顯示最後一項。Listview不能正確顯示滾動視圖中的最後一項

請幫幫我。如何可見的所有項目正常

這裏是我的代碼

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 


    <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:fillViewport="true" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 


      <TextView 
       android:id="@+id/electronic_TV" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:text="@string/no_data_find" 
       android:textSize="40dp" 
       android:textStyle="bold" 
       android:visibility="gone" /> 

      <RelativeLayout 
       android:id="@+id/rltop" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginLeft="15dp" 
       android:layout_marginTop="10dp" 
       android:background="@color/white"> 

       <TextView 
        android:id="@+id/tvadver" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:gravity="center" 
        android:text="ADVERTISEMENT" 
        android:textColor="@color/light_grey" 
        android:textSize="12dp" 
        android:textStyle="normal" /> 

       <RelativeLayout 
        android:id="@+id/rl_viewfliper" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_below="@+id/tvadver" 
        android:layout_marginBottom="10dp" 
        android:layout_marginLeft="1dp" 
        android:layout_marginRight="10dp"> 

        <ViewFlipper 
         android:id="@+id/view_flipper" 
         android:layout_width="fill_parent" 
         android:layout_height="130dp"> 

        </ViewFlipper> 
       </RelativeLayout> 
      </RelativeLayout> 

      <ListView 
       android:id="@+id/fashionLV" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/tvmsg" 
       android:layout_weight="1" 
       android:divider="@android:color/transparent"></ListView> 


     </LinearLayout> 
    </android.support.v4.widget.NestedScrollView> 
</LinearLayout> 

Java代碼

commanAdapter = new CommanAdapter(getActivity(), commanModelArrayList); 
          fashionLV.setAdapter(commanAdapter); 
          GeneralFunction.setListViewHeightBasedOnChildren(fashionLV); 

GeneralFunction代碼:

public static void setListViewHeightBasedOnChildren(ListView listView) { 
     ArrayAdapter listAdapter = (ArrayAdapter) listView.getAdapter(); 
     if (listAdapter == null) { 
      // pre-condition 
      return; 
     } 

     int totalHeight = 0; 
     for (int i = 0; i < listAdapter.getCount(); i++) { 
      View listItem = listAdapter.getView(i, null, listView); 
      listItem.measure(0, 0); 
      totalHeight += listItem.getMeasuredHeight(); 
     } 

     ViewGroup.LayoutParams params = listView.getLayoutParams(); 
     params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
     listView.setLayoutParams(params); 

    } 
+1

將下邊距== 15dp添加到litsview – Shane

+0

其不好的答案,因爲雖然我添加了保證金底部最後一項再次不可見。但列表視圖保持距離從底部 – ajit

+0

您提供自定義高度列表視圖或它的行? – Shane

回答

0

使用 「ListView控件」 和 「滾動型」 的不建議使用物體。

您應該在同一個適配器中使用不同的視圖。例如;

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View rowView = convertView; 
     MyListItem currentItem = myList.get(position); 
     LayoutInflater Inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     if (currentItem.getListItemType() == "Description") { 
       rowView = Inflater.inflate(R.layout.descriptionlayout, null); 
       TextView tvDesc= (TextView) rowView.findViewById(R.id.tvAccountType); 
       tvDesc.setText("Desc"); 
     } else if (currentAccountItem.getListItemType() == "ListItem") { 
       rowView = Inflater.inflate(R.layout.list_item_layout, null); 
       ... 
     } 
    } 

您應該將「ListItemType」屬性添加到您的列表對象類型。並在getView()方法中檢查此屬性並填充不同的佈局。 就你而言,你可以爲你的LinearLayout創建新的佈局。並將一個對象插入到這一行的列表中。並設置ListItemType。並檢查此屬性並在getView()上擴大此佈局。

希望它有幫助。

0

ListViewNestedScrollView造成的問題很多,ListView推薦使用,而不是去RecyclerView,你必須修改相應的適配器。

0

您可以使用列表視圖方法在listview中將您的自己的頁腳視圖添加到您的listview中。

它會顯示所有listView的元素。