I am trying to implement listview inside scrollview or nestedscroll view but my list dose not visible last item properly .
please help me. how to visible all item properly
here is my code
<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 code
commanAdapter = new CommanAdapter(getActivity(), commanModelArrayList);
fashionLV.setAdapter(commanAdapter);
GeneralFunction.setListViewHeightBasedOnChildren(fashionLV);
GeneralFunction code:
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);
}
The use of "ListView" and "ScrollView" objects together is not recommended.
You should use different views in same adapter. For example;
You should add "ListItemType" property to your list object type. And check this property in
getView()
method and inflate different layouts. In your case, you can create new layout for yourLinearLayout
. And insert an object to your list for this row. And set ListItemType. and check this property and inflate this layout ongetView()
.Hope it helps.