- 浏览: 534557 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
在Android应用开发中,很多时候都会遇到这样的需求,一个listView,含有N项,当点击某项时,该项展开,显示该项中隐藏的某些控件,再点击,该项收回,重新隐藏部分控件,当一项打开状态,点击另一项,另一项展开,该项关闭。
当listview的item多于一个屏幕的时候,会出现重复选择问题,就是当你选中一项滑动的时候,可能会发现滑动后出现的某项也是在选中状态,这个问题令人十分抓狂。见网上有个方法是:在adapter的getView里面不使用convertview。每一个view都是重新创建一个。能够解决问题,但是还是有点浪费资源。
main.xml:
list_item.xml:
ListAdapter:
ListViewTestActivity:
当listview的item多于一个屏幕的时候,会出现重复选择问题,就是当你选中一项滑动的时候,可能会发现滑动后出现的某项也是在选中状态,这个问题令人十分抓狂。见网上有个方法是:在adapter的getView里面不使用convertview。每一个view都是重新创建一个。能够解决问题,但是还是有点浪费资源。
main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="ListView Test" /> <ListView android:id="@+id/list" android:layout_width="wrap_content" android:layout_height="fill_parent" ></ListView> </LinearLayout>
list_item.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Test" android:textSize="20sp" /> <LinearLayout android:id="@+id/hint_image" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:visibility="gone"> <ImageView android:id="@+id/image_uefa" android:layout_width="0dp" android:layout_height="60dp" android:layout_weight="1" android:src="@drawable/uefa" /> <ImageView android:id="@+id/image_mascot" android:layout_width="0dp" android:layout_height="60dp" android:layout_weight="1" android:src="@drawable/mascot" /> </LinearLayout> </LinearLayout>
ListAdapter:
package cn.demo; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; public class ListAdapter extends BaseAdapter { private Context mContext; private int mLastPosition = -1; public ListAdapter(Context context) { this.mContext = context; } @Override public int getCount() { return 100; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { Holder holder = new Holder();; if(convertView == null ) { LayoutInflater inflater = LayoutInflater.from(mContext); convertView = inflater.inflate(R.layout.list_item, null); holder.textView = (TextView)convertView.findViewById(R.id.textView); holder.UEFAView = (ImageView)convertView.findViewById(R.id.image_uefa); holder.mascotView = (ImageView)convertView.findViewById(R.id.image_mascot); holder.hint = convertView.findViewById(R.id.hint_image); convertView.setTag(holder); } else { holder = (Holder) convertView.getTag(); } holder.textView.setText("Hello,It is " + position); if (position == mLastPosition) { holder.hint.setVisibility(View.VISIBLE); } else { holder.hint.setVisibility(View.GONE); } return convertView; } class Holder { TextView textView; ImageView UEFAView; ImageView mascotView; View hint; } public void changeImageVisable(int position) { if(position != mLastPosition) { mLastPosition = position; } else { mLastPosition = -1; } notifyDataSetChanged(); } }
ListViewTestActivity:
package cn.demo; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; public class ListViewTestActivity extends Activity implements OnItemClickListener{ private ListView mListView; private ListAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mListView = (ListView)findViewById(R.id.list); mAdapter = new ListAdapter(this); mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mAdapter.changeImageVisable(position); } }
- ListViewTest.rar (187.4 KB)
- 下载次数: 21
发表评论
-
Android中如何模拟一次点击(touch)事件
2014-05-06 10:41 0在Android中有时需要模拟某一个View的touch事件, ... -
Android程序Crash时的异常上报
2014-04-28 18:15 0http://blog.csdn.net/singwhatiw ... -
android程序中证书签名校验的方法
2014-04-28 17:58 2008android程序中证书签名校验的方法一 2013-02 ... -
MD5理解错了,哎
2014-03-17 14:14 0MD5只对数据加密是无法解密的,也就是说,你把100加密后,就 ... -
Android 获取网络时间
2014-03-12 11:42 2046Android 获取网络时间 在网上看到的最常见的方式有: ... -
SQLite清空表并将自增列归零
2014-03-05 18:02 1553SQLite清空表并将自增列归零 作者:Zhu Yanfeng ... -
Handler小看一下
2013-11-11 16:42 0android handler调用post方法还是阻塞 su ... -
Frame Animation小看一下
2013-10-12 16:30 794Demo运行效果图: 源码: -
动画小学一下
2013-10-12 16:14 739转自: http://www.eoeandroid.com/f ... -
Android 动画之ScaleAnimation应用详解
2013-10-12 15:49 1014===============eoeAndroid社区推荐:= ... -
android开发中的一个工具类
2013-06-19 16:04 0package com.wanpu.login.dialog; ... -
android TextView怎么设置个别字体颜色并换行?
2013-06-20 09:25 1693(1)、TextView 设置个别字体颜色 TextView ... -
Android开发之文件下载,状态时显示下载进度,点击自动安装
2013-05-07 15:38 1433在进行软件升级时,需要进行文件下载,在这里实现自定义的文件下载 ... -
android中的状态保存
2013-04-07 14:21 982package com.zzl.call; import ... -
android动画基础:tween动画
2013-04-06 11:21 1252工程结构图: [img] [/img] 四个动画的xml ... -
面试中遇到的几个问题
2013-06-09 11:56 1006SAX与DOM之间的区别 SAX ( ... -
Android获取其他包的Context实例,然后调用它的方法,反射!!!
2013-03-25 10:32 1227Android中有Context的概念,想必大家都知道。Con ... -
Android的内存机制和常见泄漏情形
2013-03-06 16:55 798一、 Android的内存机制 Android的程序由Ja ... -
JUnit测试小小demo
2013-03-06 16:37 1170运行效果图: [img] [/img] 项目结构图 ... -
android开发中的异常小工具
2013-03-04 15:53 902package com.zzl.tools; impor ...
相关推荐
ListView的item选择问题是一个常见的编程挑战,涉及到用户交互、数据绑定和状态管理等多个方面。以下将详细阐述ListView的item选择机制及其相关知识点。 1. **ListView的Item点击事件处理** - 在ListView中,我们...
然而,在实现ListView时,由于其内部机制,可能会出现一个问题,即ListView中的item(列表项)重用导致图片重复加载,这不仅会消耗不必要的网络资源,还可能影响用户体验。本文将深入探讨这个问题,并提供解决方案。...
然而,当ListView的Item包含多个EditText和一个CheckBox时,会面临一些特定的挑战。这个“listview item上面包含多个edittext和一个CheckBox的方案”正是为了解决这些问题而设计的。以下是关于这个主题的详细知识点...
ListView的默认行为是不设置任何项为选中状态,但有时我们希望在应用启动时,第一个Item能自动呈现出选中效果,以引导用户或者突出初始焦点。本教程将深入讲解如何实现ListView的第一个Item的默认选中状态。 首先,...
在这个布局文件中,可以设置一个背景颜色,例如使用`android:background="@drawable/list_item_selector"`,这里`list_item_selector`是一个颜色选择器资源。 2. **创建颜色选择器资源** 在res/drawable目录下创建...
ExpandableListView是ListView的一个扩展,它不仅支持普通的单行显示,还能处理分组(Group)和子项(Child)的概念,允许用户展开或折叠特定的分组来显示或隐藏其子项。 要实现这个功能,首先我们需要创建两个数据...
本篇主要探讨如何动态地添加和移除ListView中的item,以实现一个流畅的用户体验。 一、ListView的基本使用 1. XML布局:在布局文件中创建ListView,并为其指定id,例如`android:id="@+id/list_view"`。 2. 数据源:...
首先,我们需要一个自定义的ListView,这通常通过继承ListView类并重写其onTouchEvent()方法来实现。在这个方法中,我们可以监听用户的滑动操作。使用MotionEvent的ACTION_DOWN、ACTION_MOVE和ACTION_UP事件来判断...
首先,需要在布局文件中为ListView的Item定义一个XML布局,然后在Adapter中获取并修改这个视图的背景。以下是一个简单的示例: ```xml <!-- item_background.xml --> android:layout_width="match_parent" ...
`DragSortListView`是一个开源的Android库,它扩展了原生的ListView,增加了拖放排序的能力。这个库允许用户通过手势拖动ListView中的item,以改变它们的顺序,从而提供了一种直观且用户友好的交互体验。 首先,...
在这个例子中,`item_layout.xml`是每个Item的布局文件,包含一个TextView(id为`text_view`)和一个Button(id为`button`)。在getView()方法中,我们首先检查convertView是否为空,如果为空则创建新的视图,然后...
本篇将深入讲解如何在Android中创建一个ListView,并实现它包含多个不同类型的Item。 1. **ListView基本结构** ListView由一系列的View(Item)组成,每个View代表数据集中的一个条目。这些Item通过Adapter进行...
在Android中,ListView的每个项(item)都是一个View或ViewGroup,通常我们通过自定义布局文件来设计每个item的显示样式。为了实现点击效果,我们可以使用两种主要方法: 1. **自定义Adapter**: 在自定义的...
1. **自定义Adapter**:创建一个自定义的Adapter,重写`getView()`方法,在这里设置每个item的焦点行为。确保当item获取焦点时,其内部的Button也能正确获取焦点。 2. **设置Button的焦点属性**:在Button的XML布局...
博客http://blog.csdn.net/u012925323/article/details/49444153实现了ListView item滑出和扩展效果。ListView item点击时候动态地扩展相应的View视图,有利于美观和节约屏幕空间。
2、选择其中的checkbox,当滚动ListView的时候,会出现一些Checkbox选择错位的现象, 原因:为记住Checkbox的选择状态 解决方案:当选择Checkbox的时候,记下其状态,然后在getView方法中进行设置
当需要在一个ListView中显示不同风格的item时,这通常涉及到自定义Adapter和ViewHolder模式的应用。本篇将详细讲解如何实现这一功能。 首先,我们需要了解ListView的工作原理。ListView通过Adapter来与数据源进行...
然而,当ListView的子项(item)宽度超过屏幕宽度时,如何实现自动换行就成了一个需要解决的问题。在本篇中,我们将深入探讨如何在Android中为ListView实现自动换行的功能。 首先,我们需要理解ListView的工作原理...
1. **自定义ViewGroup**: 为ListView的每个Item创建一个自定义的ViewGroup,例如叫做SwipeableRow。这个ViewGroup将包含实际显示内容的子View以及用来做滑动手势的额外View。我们可以使用FrameLayout或LinearLayout...