java 列表展开方式_android列表控件实现展开、收缩功能
最近在做一个Rss阅读器,我看了一看别人做的阅读器中的lisView可以伸缩,展开,我就在网上搜索了一下。果然让我找到,下面就我找到的一个小例子,给大家分享一下。
ActivityMain .java
package com.android;
import android.app.ExpandableListActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ExpandableListView.ExpandableListContextMenuInfo;
public class ActivityMain extends ExpandableListActivity {
private ExpandableListAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setTitle("ExpandableList");
mAdapter = new MyExpandableListAdapter(this);
setListAdapter(mAdapter);
registerForContextMenu(this.getExpandableListView());
}
//为列表的每一项创建上下文菜单(即长按后 呼出的菜单)
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("ContexMenu");
menu.add(0,0,0,"ContextMenu");
}
//单击上下文菜单后的逻辑
@Override
public boolean onContextItemSelected(MenuItem item) {
ExpandableListContextMenuInfo info = (ExpandableListContextMenuInfo)item.getMenuInfo();
String title = ((TextView) info.targetView).getText().toString();
int type =ExpandableListView.getPackedPositionType(info.packedPosition);
if(type == ExpandableListView.PACKED_POSITION_TYPE_CHILD)
{
int groupPos = ExpandableListView.getPackedPositionGroup(info.packedPosition);
int childPos = ExpandableListView.getPackedPositionChild(info.packedPosition);
Toast.makeText(this, title+"-Group Index"+groupPos+"Child Index:"+childPos,
Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
MyExpandableListAdapter.java
package com.android;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
private Context mContext;
//父列表数据
private String[] groups ={"group1","group2","group3","group4",""};
//子列表数据
private String [][] children ={
{"child1"},
{"child1","child2"},
{"child1","child2","child3"},
{"child1","child2","child3","child4"},
};
MyExpandableListAdapter(Context context){
mContext = context;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return children[groupPosition][childPosition];
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
//取子列表中的某一项的view
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
TextView textView = getGenericView();;
textView.setText(getChild(groupPosition, childPosition).toString());
return textView;
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return children[groupPosition].length;
}
@Override
public Object getGroup(int groupPosition) {
return groups[groupPosition];
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return groups.length;
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
TextView textView = getGenericView();
textView.setText(getGroup(groupPosition).toString());
return textView;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}
//获取某一项的view的逻辑
private TextView getGenericView(){
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,48);
TextView textView = new TextView(mContext);
textView.setLayoutParams(lp);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
textView.setPadding(32, 0, 0, 0);
return textView;
}
}
运行的结果如下:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
java 列表展开方式_android列表控件实现展开、收缩功能相关推荐
- java imageview的使用_Android使用控件ImageView加载图片的方法
在 Android 加载图片一般使用 ImageView,这里简单记录一下这个控件的使用方法. 最简单就是在 xml 里直接使用 ImageView 标签: android:orientation=& ...
- IE5下通过、不会被列表框遮挡的日期控件
一般不会被列表框遮挡的日期控件都是用一个透明的iframe来做的,但在IE5下因为透明风格不被支持却无法正常使用.这个控件直接使用iframe作为日期选择界面,就解决了兼容性问题.不过只有简单的选择功 ...
- IE已经阻止此站点以不安全的方式使用ActiveX控件的解决
声明:这是转帖的 原帖地址:http://blog.pfan.cn/yuqiexing/52344.html IE8很烦躁.今天尝试ocx控件发消息的时候,死活不行.终于看到一行小字: "电 ...
- Internet Explorer 已经阻止此站点以不安全的方式使用ActiveX控件(多种解决方法)
一.电脑出现IE已经阻止此站点以不安全的方式使用ActiveX控件,因此该网页无法正确显示"的处理办法: 1.更改安全级别.. 如果你看不懂或者不会,我教你一个简单的. 打开IE.找到上方的 ...
- java多文件上传plupload控件实现多图片上传(二)
接上篇 java多文件上传plupload控件实现多图片上传(一) 续写PluploadUtil 和 Plupload PO类,以及后台的action. 至此,可实现多文件上传功能. 上传文件Acti ...
- android 仿旅游日历控件_Android日历控件MaterialCalendarView
calendar.png 最近项目中需要用到日历控件,1.需要给已经记录的日期添加圆环标记2.给当天日期添加背景3.给周末日期更改颜色4.日历添加农历,需求如上图所示: GitHub的material ...
- 牛牛截图插件java实例_[分享]牛牛截图控件最终版
实现牛牛截图控件的初衷,是想在学习的同时,实现一个具备当前主流截图功能的插件,方便集成进不同的应用系统中,节省开发时间. 一直以来,都对目前各主流即时通讯软件的截图效果比较喜欢,前段时间专门花时间进行 ...
- SAP UI5 应用开发教程之六十六 - 基于 OData V4 的 SAP UI5 表格控件如何实现删除功能试读版
一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...
- 露雨资源库三(第一个.net2.0软件)-为控件增加自动完成功能
前面我写过"露雨资源库"的第一篇和第二篇,分别介绍了界面设计和设计思路. 链接如下: 露雨资源库(第一个.net2.0软件)一 http://luyu.cnblogs.com/ar ...
最新文章
- js 动态拼接html 正则,在JavaScript中使用动态(可变)字符串作为正则表达式模式...
- 大话javascript 2期:执行上下文与执行上下文栈
- 使用编辑工具快速创建实体对象的方法
- java mvc mvp_MVC和MVP设计模式
- SpringBoot中@Email报错解决
- android 跑windows软件,Windows 10 Mobile用户现可让设备跑上Android软件
- 勤哲web配置教程_勤哲excel服务器安装与使用
- 基于taskctl实现kettle任务调度
- 安卓机型app的编译与反编译 apk文件的简单说明与解析
- Hadoop 十年解读与发展预测(插图+排版)
- 如何低格台式计算机的硬盘,低级格式化,教您硬盘如何进行低级格式化
- QT:主页面全屏显示(根据显示屏分辨率调整主页面尺寸)
- 哪位大神能帮我解读下这段代码什么意思吗???万分感谢
- 腾讯云云硬盘快速入门-挂载云硬盘
- “1448万,一条命”:在生命面前,金钱显得太刺眼
- 谁又在乎过你呢“main()之泪伤”
- Windows磁盘管理工具Diskpart之二 管理动态磁盘
- 谷歌三大核心技术(一)The Google File System中文版
- Matlab绘制误差棒图----errorbar函数的使用
- 2. 深度生成模型-扩散模型(去噪扩散概率模型)
热门文章
- Asp.NetCore轻松学-部署到 IIS 进行托管
- Actor-ES框架:Ray--事件(Event)编写说明
- .NET Core 工具中的新内容
- get√—搜索微信公众号【Dotnet跨平台】指定文章的办法
- CSDN博客文章阅读模式插件(附源码)
- Android之You need to use a Theme.AppCompat theme (or descendant) with this activity.
- Android之在Activity中动态得到Adapter类中数据
- Linux下最简单的修改文件名后缀的命令行技巧
- sqlite数据库备份还原、导出导入
- Android之内存溢出(Out Of Memory)的总结