listview条目点击可展开(初级)
来源:互联网 发布:牛肉干市场调查数据 编辑:程序博客网 时间:2024/05/16 00:31
先是项目中经常用到点击listview,然后展开Item的内容。我将这种需求分为两种:
- Item的内容是一个布局(不是listview)
- Item的内容是一个listview(或者listview类似能够滑动的控件
今天先介绍一下listview的Item内容是一个布局,第二种后期我在写文章介绍。好了,进入正题。先看下我的思路:我们可以监听一下listview的点击事件,然后记录下position,然后在该数据的Bean中设置一个flug(1:展开?2:不展开),然后刷新adapter。在adapter中,我们根据Bean中的flug,判断Item的布局是否显示。
接下来这个例子是这样的:有一个Person对象,有name,age属性,点击name,显示age,然后再点击name,age不显示。
不多说,先附上效果图。
直接上代码。
首先是XML:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/one_click_listview" android:layout_width="match_parent" android:layout_height="wrap_content"></ListView></LinearLayout>
这是listview Item 的布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/text_one_name" android:layout_width="match_parent" android:layout_height="30dp" /> <TextView android:id="@+id/text_one_age" android:layout_width="match_parent" android:layout_height="50dp"/></LinearLayout>
这是Bean对象:
class Person{ private String name; private String age; private String flug; public String getFlug() { return flug; } public void setFlug(String flug) { this.flug = flug; } public Person(){} public Person(String name, String age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; }}
上面的Bean对象里的flug也就是标记,在adapter中需要该字段的。1:显示 2:不显示
下面是adapter:
class OneClickAdapter extends BaseAdapter{ private List<Person> personList; public OneClickAdapter(){} public List<Person> getPersonList() { return personList; } public void setPersonList(List<Person> personList) { this.personList = personList; } public OneClickAdapter(List<Person> personList) { this.personList = personList; } @Override public int getCount() { return personList.size(); } @Override public Object getItem(int position) { return personList.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final MyViewHoder myViewHoder; if(convertView == null){ convertView = View.inflate(parent.getContext(), R.layout.one_click_item, null); myViewHoder = new MyViewHoder(); myViewHoder.text_name = (TextView)convertView.findViewById(R.id.text_one_name); myViewHoder.text_age = (TextView)convertView.findViewById(R.id.text_one_age); convertView.setTag(myViewHoder); }else{ myViewHoder = (MyViewHoder)convertView.getTag(); } if("1".equals(personList.get(position).getFlug())){ myViewHoder.text_age.setVisibility(View.VISIBLE); myViewHoder.text_age.setText(personList.get(position).getAge()); }else{ myViewHoder.text_age.setVisibility(View.GONE); myViewHoder.text_age.setText(personList.get(position).getAge()); } myViewHoder.text_name.setText(personList.get(position).getName());// myViewHoder.text_name.setOnClickListener(new View.OnClickListener() {// @Override// public void onClick(View v) {// personList.get(position).setFlug("1");// }// }); return convertView; } class MyViewHoder{ public TextView text_name; public TextView text_age; }}
接下来是重点:
private void setListener() { listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if( list.get(position).getFlug() == null || list.get(position).getFlug().equals("2")){ list.get(position).setFlug("1"); }else{ list.get(position).setFlug("2"); } adapter.notifyDataSetChanged(); } }); }
上述代码是给listview设置一个监听,维护Bean中的flug字段;每一个点击更新listview之后,都更新adapter。
好了,大功告成!是不是不难呢?! 后期我再把可折叠的listview的写一下。也就是网上的expandablelistview。不过自定义listview而已。对了,文章如果有错误,记得指正…….! Thank you!
1 0
- listview条目点击可展开(初级)
- ListView 条目显示点击
- 点击listview条目跳转
- 可点击展开的ListView--ExpandableListView
- listView条目不能点击问题
- Listview的条目点击事件失效(setOnItemClickedListener)
- listview条目点击事件无效(或者需要同时监听条目点击事件和子控件的点击事件)
- ExpandableListView(似listview中的item可展开)可展开的列表组件
- ListView点击Item展开隐藏项(单项展开、多项展开、复杂布局时的展开处理)
- 可展开(收缩)的列表ListView(ExpandableListView)
- ExpandableListView实现可展开的ListView(取自真实项目)
- ExpandableListView--------可展开的ListView(自定义箭头)
- Android ListView点击展开收起效果(一)
- 点击listView条目,给点中条目加上上下边框(变换背景),item布局控件的点击事件
- Android控件listView条目不能点击问题
- 点击ListView条目激活系统组件
- 关于ListView 条目点击混乱的问题
- listView点击条目跳转并带参数
- 【C/C++】JAVA与C/C++ AES加密算法同步
- 头文件的编写(例子:按钮中断控制LED亮灭)
- python——类型 对象 变量
- Java中static关键字用法总结
- JSP+Servlet实现登录功能.
- listview条目点击可展开(初级)
- 冒泡排序
- 08001-命名管道提供程序:无法打开与SQL Server的连接[1326]
- Java面试
- 教训-单片机TTL串口电平不稳定
- Android support v4包提供的下拉刷新控件(SwipeRefreshLayout)的使用
- JAVA四种线程池
- Spark笔记:RDD基本操作(上)
- sql优化----不同写法下group by 的影响