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;
@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);
...
}
}
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 your LinearLayout
. And insert an object to your list for this row. And set ListItemType. and check this property and inflate this layout on getView()
.
Hope it helps.
NestedScrollView
内的ListView
会产生很多问题, 不建议您使用ListView
代替RecyclerView
,您必须相应地更改Adapter。
You add your own footer view in your listview
by using list view methods.
It will shows after all the elements of listView
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.