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;

}

}

运行的结果如下:

a464063f5f048f77fa9297f3269f8566.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每个人都应该学习编程,因为它会教你如何思考

▲数据汪特别推荐点击上图进入玩酷屋扎克伯格11岁开始学习编程,创办Facebook;比尔盖茨13岁学习编程,创办微软……乔布斯说:“每一个人都应该学习电脑编程,因为它会教你如何思考。"现在在北京上海,顶级…

.NET Core HttpClient请求异常思考

【导读】上一篇我们讨论了针对项目上异常信息的具体分析而给出对应解决方案,本篇仅是我个人对相关异常信息了解过后的进一步学习和思考,希望对后续遇到此异常信息的同学们给予思路扩展下面我们结合如下两个异常信息进行大致排查分析,到底什么…

程序员编程10大原则,请牢牢记住!

全世界只有3.14 % 的人关注了数据与算法之美1、想清楚,再动手写代码刚入行的新手,为了展示自己的能力,拿到需求迫不及待地就开始上手写代码,大忌!2、不交流,就会头破血流不爱说话和沟通,需求都理…

技术分享|基于SQL Server Change Tracking实现宽表的增量更新

源宝导读:在企业建设信息化的过程中,客户通常会使用一些数仓工具来构建数据资产,随着用户的要求越来越高,传统的ETL技术已经无法满足客户的实时性诉求,本文将分享“天际-数据平台”如何基于SQL Server来实现数仓数据的…

C# 文件操作详解(一)---------File类

C#对文件的操作相当方便,主要涉及到四个类:File、FileInfo、Directory、DirectoryInfo,前两个提供了针对文件的操作,后两个提供了针对目录的操作,类图关系如下: 图1:类图 下面通过实例来看下每个…

小时“数感”好,长大才能数学好

▲数据汪特别推荐点击上图进入玩酷屋很多妈妈都无比担心孩子的数学:孩子会不会像自己一样重蹈覆辙呢?在很多人眼里,数学是一堆怎么也弄不明白的公式、符号,而且是怎么努力怎么用功死活就是学不好的一门学科。可是,同样…

java并行流 阻塞主线程_多线程入门案例与java8的并行流

java8 实例请移步https://www.cnblogs.com/ngLee/p/14021859.html进程与线程进程是所有线程的集合,每一个线程是进程中的一条执行路径。多线程的创建方式,继承Thread\实现Runable/*** 第一种创建线程的方式,继承Thread*/public class MultiTh…

BlazorCharts 原生图表库的建设历程

点击蓝字关注我们背景目前 Blazor 中可用的图表组件库主要有以下几个:ant-design-blazor/ant-design-charts-blazor-基于G2Plot mariusmuntean/ChartJs.Blazor- 基于ChartJs blazor-cn/Blazor.ECharts- 基于EChartsant-design-charts-blazor是我主导完成的&#xff…

别光顾着背单词了,每天花18分钟做这件事,英语水平暴增!

全世界只有3.14 % 的人关注了数据与算法之美在知乎上看过一个问题:在当今社会,英语还重要吗?点赞第一的回答是——英语可以差,但你的口语一定要好!你记住了1万个单词、将语法书倒背如流、英语成绩名列前茅、英语证书一…

WPF 路径动画PathAnimations的使用

在wpf中让一个控件按照一定的路径运行的动画。。叫做路径动画&#xff0c;这个示例演示了让一个rectangle按照一个s形曲线反复运行的动画。效果&#xff1a;只有一个文件&#xff1a;全部代码如下 &#xff1a;<Window x:Class"wpfcore.MainWindow"xmlns"htt…

STEM科学实验:测试了2000+儿童后证明它秒杀了90%的玩具!

▲数据汪特别推荐点击上图进入玩酷屋除了ipad和那些普通的玩具&#xff0c;我们还能给孩子玩儿些什么&#xff1f;当然是“玩”科学。因为创造力是他们这个年纪&#xff0c;最需要培养的东西。真正的科学启蒙不是将科学知识生硬的灌输给孩子&#xff0c;而是要让孩子在探索中能…

人工智能时代,学好数学有什么用?

随着科技的快速发展&#xff0c;人工智能的热度越来越高。而数学知识蕴含着处理智能问题的基本思想与方法&#xff0c;是理解复杂算法的必备要素。在机器学习工作流程中&#xff0c;数学与代码高度交织在一起&#xff0c;代码通常可以根据数学直观地构建&#xff0c;甚至会共享…

使用CLI模板 | Visual Studio 2019(16.10)新功能试用

Visual Studio很早以前就有模板了&#xff0c;.NET Core命令行界面&#xff08;CLI&#xff09;也能够安装模板并通过dotnet new命令使用它们。然而&#xff0c;但是并没有什么简单的方法可以在Visual Studio中直接使用这些模板。在Visual Studio 2019(16.10)中&#xff0c;启用…

jmeter测试java服务_Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

前言JMS 介绍:JMS 即 Java 消息服务(Java Message Service)应用程序接口&#xff0c;是一个 Java 平台中关于面向消息中间件(MOM)的 API&#xff0c;用于在两个应用程序之间&#xff0c;或分布式系统中发送消息&#xff0c;进行异步通信。(百度)本文只测试 ActiveMQ,其他消息中…

MetroGridHelper: A helpful debugging assistant for designers and developers alike

You’ve heard me preach it before: fix those margins, align, and try and make your apps as beautiful and inspiring as you can (see also: my designer tips for developers). On Thursday, I stopped by the Windows Phone Design Team’s beautiful studio space her…

马斯克和贝索斯的“星球大战”

全世界只有3.14 % 的人关注了数据与算法之美商业太空计划已经蓬勃发展了十年。在这个领域中&#xff0c;最雄心勃勃的两家公司当属Blue Origin&#xff08;蓝色起源&#xff09;和SpaceX&#xff08;太空探索技术公司&#xff09;&#xff0c;而它们之间的竞争一直是众人的焦点…

java pojo 是什么_什么是POJO

POJO(Plain Old Java Objects)简单的Java对象&#xff0c;实际就是普通JavaBeans&#xff0c;是为了避免和EJB混淆所创造的简称。在Java应用程序中的角色使用POJO名称是为了避免和EJB混淆起来, 而且简称比较直接. 其中有一些属性及其gettersetter方法的类,没有业务逻辑&#xf…

JMeter基础知识

2019独角兽企业重金招聘Python工程师标准>>> 1.JMeter常用术语 1&#xff09;采样器&#xff08;Samplers&#xff09; 采样器是JMeter测试脚本的基础单元&#xff0c;用户可以用他来向服务器发出一个特定的请求&#xff0c;比如HTTP请求、JAVA请求。 2&#xff…

开年趣图汇总:对不起,让你笑了这么久

全世界只有3.14 % 的人关注了数据与算法之美房东家小孩抓周&#xff0c;感觉不管抓什么都很有未来....计算机语言成就一段恋情程序员&#xff0c;千万别像他学习如果编程语言是工具你这工作怎么越做越晚呢&#xff1f;那一刻&#xff0c;程序员露出了尴尬又不失礼貌的微笑这个名…

【视频回放】Best of Build Tour in China 暨 Watching Party - 大湾区专场

活动介绍微软一年一度的Build大会已经在5月25-27日盛大召开&#xff0c;今年的主题演讲&#xff0c;全球CEO Satya Nadella从开发者速度&#xff0c;智能云原生应用&#xff0c;以及在混合工作场景下提高生产力等诸多话题进行探讨。为了让技术社区和开发者更好地了解微软Build大…