listview嵌套listview
来源:互联网 发布:ebsco数据库免费入口 编辑:程序博客网 时间:2024/06/16 09:25
问题:
listview嵌套listview,会显示不全。
解决办法:
/** * 设置Listview的高度 */ public void setListViewHeight(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { 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); }
示例demo:
package com.example.administrator.mylistviewpager;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.BaseAdapter;import android.widget.ListAdapter;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;import java.util.List;import butterknife.BindView;import butterknife.ButterKnife;public class ListviewActivity extends AppCompatActivity { @BindView(R.id.tv) TextView tv; @BindView(R.id.lv) ListView lv; private List<ListView> list = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mainii); ButterKnife.bind(this); tv.setText("listview嵌套listview"); for (int i = 0; i < 3; i++) { list.add(new ListView(this)); } MyListViewAdapter adapter = new MyListViewAdapter(list); lv.setAdapter(adapter); } class MyListViewAdapter extends BaseAdapter { private List<ListView> list = new ArrayList<>(); public MyListViewAdapter(List<ListView> list) { this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = getLayoutInflater().inflate(R.layout.listview_itemii, parent, false); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.tv1.setText("我是第" + position + "个listview"); ArrayList<String> list1 = new ArrayList<>(); for (int i = 0; i < 20; i++) { list1.add("item====" + i); } ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(ListviewActivity.this, R.layout.listview_item, R.id.tv, list1); holder.lv2.setAdapter(arrayAdapter); setListViewHeight(holder.lv2); return convertView; } /** * 设置Listview的高度 */ public void setListViewHeight(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { 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); } class ViewHolder { @BindView(R.id.tv1) TextView tv1; @BindView(R.id.lv_2) ListView lv2; ViewHolder(View view) { ButterKnife.bind(this, view); } } }}
主界面布局:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivityI"> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" android:text="viewpager是listview的一个item,可以一起滑动"/> <ListView android:id="@+id/lv" android:background="@color/colorAccent" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/tv" /></RelativeLayout>
主界面 外层listview的item布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" tools:context=".MainActivityI"> <TextView android:id="@+id/tv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:text="hahhaha" android:textSize="25sp" /> <ListView android:id="@+id/lv_2" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimary" /></LinearLayout>
内层listview的item布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" tools:context=".MainActivityI"> <TextView android:id="@+id/tv" android:gravity="center" android:textSize="30sp" android:background="@color/colorAccent" android:textColor="#000000" android:text="我是一个text" android:layout_width="match_parent" android:layout_height="wrap_content" /></LinearLayout>
阅读全文
0 0
- ListView中嵌套ListView
- listview嵌套listview
- ListView嵌套ListView优化
- ListView中嵌套listView
- ListView中嵌套ListView
- 关于listview嵌套listview
- ListView嵌套ListView
- ListView中嵌套ListView
- Listview嵌套Listview
- ListView嵌套listView问题
- ListView嵌套ListView
- Listview嵌套Listview
- ListView中嵌套ListView
- listview嵌套listview问题
- 解决listview 嵌套listview
- listview嵌套listview
- ListView中嵌套ListView
- ListView嵌套ListView
- mysql中 查询表用到的某个字段
- 打印输出100-999之间的水仙花数
- c++中构造函数不能为虚函数的原因
- 备份与恢复
- TCP/IP状态机
- listview嵌套listview
- Linux设备驱动概述
- bzoj1070 修车 最小费用流
- iOS开发duplicate symbol _ProviderReleaseData
- C/C++static关键字的作用
- 深入javaweb学习记录-01web请求过程
- hdu 1074 Doing Homework(状压DP)
- Unreal Editor Open Level 蓝图 移动 旋转
- android自学第五天 Activity生命周期以及Activity之间的传值