Android listview 嵌套 gridview (滑动控件的嵌套使用)
来源:互联网 发布:python 替换分隔符 编辑:程序博客网 时间:2024/06/18 14:55
在开发过程中 我没会遇到很多顺序的列表 如 水平排列我们可以用gridview 竖直排列列表 我们可以使用listview 当然也可以使用 recyclerview(下篇再说) 还有就是可滑动的页面配合列表 scrollview+listview 或 scrollview+gridview 关于两个滑动控件得嵌套 在此我浅薄得阐述一下 希望可以给大家一点帮助
首先我们需要解决第一个问题就是控件的高度问题 两个滑动控件嵌套我们需要重新设置高度 如果不设置 会不显示或者只显示一行
首先我没先写一个listview 给他重写高度
重写listview
public class MyListview extends ListView {
public MyListview(Context context) {
super(context);
}
public MyListview(Context context, AttributeSet attrs) { super(context, attrs);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// 此处是关键 int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec);}
}
过程很简单 只需重写一个方法onMeasure 一行代码就可以搞定
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
同理 再来写gridview
重写gridview
public class MyGridView extends GridView {
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs) { super(context, attrs);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec);}
}
同样还是重复操作 走一遍
此时你就可以 使用了 我给个listview 嵌套gridview的例子
listview 在外 listview的xml
ListView
android:layout_width=”match_parent”
android:layout_height=”match_parent”
android:scrollbars=”none”
android:id=”@+id/all_listview”>ListView
list view的adater
public class FWDiscussAdapter extends BaseAdapter {
Context context;
List《HashMap《String,String》》 mlist;
public FWDiscussAdapter(Context context, List《HashMap《String,String》》 mlist) {
this.context=context;
this.mlist= mlist;
}
@Overridepublic int getCount() { return mlist.size();}@Overridepublic Object getItem(int position) { return mlist.get(position);}@Overridepublic long getItemId(int position) { return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder holder; if (convertView==null){ view = View.inflate(context, R.layout.discuss_list_item,null); holder = new ViewHolder(); holder.head = (ImageView) view.findViewById(R.id.dis_listhead); holder.grade = (ImageView) view.findViewById(R.id.dis_list_grade); holder.name = (TextView) view.findViewById(R.id.dis_listname); holder.time = (TextView) view.findViewById(R.id.dis_listtime); holder.listcontent = (TextView) view.findViewById(R.id.dis_listcontent); holder.contentpic = (GridView) view.findViewById(R.id.dis_listcontentpic); view.setTag(holder); }else { view= convertView; holder= (ViewHolder) view.getTag(); } holder.listcontent.setText(mlist.get(position).get("1"));
//初始化 gridview的适配器 并设置给gridview
FwDiscussGridAdapter gridAdapter = new FwDiscussGridAdapter(context,mlist.get(position));
holder.contentpic.setAdapter(gridAdapter);
return view;
}
class ViewHolder{
ImageView head,grade;
TextView name,time,listcontent;
GridView contentpic;
}
}
gridview 的 adapter
public class FwDiscussGridAdapter extends BaseAdapter {
Context context;
HashMap《String,String》 map;
public FwDiscussGridAdapter(Context context, HashMap《String,String》 map) {
this.context = context;
this.map = map;
}
@Overridepublic int getCount() { return map.size();}@Overridepublic Object getItem(int position) { return map.get(position);}@Overridepublic long getItemId(int position) { return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) { View view; ViewHolder holder; if (convertView==null){ view = View.inflate(context, R.layout.discuss_grid_item,null); holder = new ViewHolder(); holder.gridimg = (ImageView) view.findViewById(R.id.dis_grid_img); view.setTag(holder); }else { view= convertView; holder = (ViewHolder) view.getTag(); } holder.gridimg.setImageResource(R.mipmap.anmo); return view;}class ViewHolder{ ImageView gridimg;}
}
listview 绑定 adapter
ListView allList = (ListView) view.findViewById(R.id.all_listview);
List《HashMap《String,String》》 mlist = new ArrayList<>();
for (int i = 0; i < 20; i++) {
HashMap《String,String》 map = new HashMap<>();
map.put(“1”,”1111111111111111111111111111111111”);
map.put(“2”,”2”);
map.put(“3”,”3”);
map.put(“4”,”4”);
mlist.add(map);
}
FWDiscussAdapter adapter = new FWDiscussAdapter(getActivity(),mlist); allList.setAdapter(adapter);
}
到此处 就完成了 同样的 scrollview嵌套listview 也是同样的道理
- Android listview 嵌套 gridview (滑动控件的嵌套使用)
- android listView嵌套gridview的使用心得
- android listView嵌套gridview的使用心得
- android listView嵌套gridview的使用心得
- android listView嵌套gridview的使用心得
- android listView嵌套gridview的使用心得
- android listView嵌套gridview的使用心得
- android ListView/GridView与ScrollView嵌套的滑动冲突解决
- 【Android】【控件】ScrollView嵌套ListView,GridView显示不完全的解决方案
- Listview和其他滑动控件嵌套使用的坑
- listView 嵌套gridView android
- Android中ListView嵌套GridView,不让GridView滑动
- android listView嵌套gridview的使用心得-by TomHawk
- ScrollView中若嵌套有滑动的控件(如:WebView,ListView或GridView)焦点问题
- android GridView控件嵌套GridView
- srcollview 嵌套ListView ListView 再嵌套gridview 焦点滑动问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- 常见app加固厂商脱壳方法研究
- C#对图片的操作
- StringUtils中 isNotEmpty 和isNotBlank的区别
- Centos学习笔记(一):javacv在本地可以跑,放到服务器提示"no jniopencv_core in java.library.path"
- 百度云(BAE)数据库连接问题-yellowcong
- Android listview 嵌套 gridview (滑动控件的嵌套使用)
- 计算机网络理论基础
- 深入理解ConcurrentHashMap
- java基础笔记之数据类型
- 用if多分支判断是不是素数
- Android中ListView的使用及优化
- ES6的知识点
- DOS命令大全
- 负载均衡设计Nginx+Tomcat实现负载均衡(二)