ListView Item 点击展开隐藏问题

public class ListAdapter extends BaseAdapter {

private Context mContext;

private View mLastView;

private int mLastPosition;

private int mLastVisibility;

public ListAdapter(Context context) {

this.mContext = context;

mLastPosition = -1;

}

@Override

public int getCount() {

return 30;

}

@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;

if(convertView == null ) {

LayoutInflater inflater = LayoutInflater.from(mContext);

convertView = inflater.inflate(R.layout.list_item, null);

holder =new Holder();

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();

}

if(mLastPosition == position){

holder.hint.setVisibility(mLastVisibility);

}else{

holder.hint.setVisibility(View.GONE);

}

holder.textView.setText("Hello,It is " + position);

return convertView;

}

class Holder {

TextView textView;

ImageView UEFAView;

ImageView mascotView;

View hint;

}

public void changeImageVisable(View view,int position) {

if(mLastView != null && mLastPosition != position ) {

Holder holder = (Holder) mLastView.getTag();

switch(holder.hint.getVisibility()) {

case View.VISIBLE:

holder.hint.setVisibility(View.GONE);

mLastVisibility = View.GONE;

break;

default :

break;

}

}

mLastPosition = position;

mLastView = view;

Holder holder = (Holder) view.getTag();

switch(holder.hint.getVisibility()) {

case View.GONE:

holder.hint.setVisibility(View.VISIBLE);

mLastVisibility = View.VISIBLE;

break;

case View.VISIBLE:

holder.hint.setVisibility(View.GONE);

mLastVisibility = View.GONE;

break;

}

}

}

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(view, position);

}

}

时间: 2024-10-15 04:11:57

ListView Item 点击展开隐藏问题的相关文章

android listview item点击展开

最近做项目真是头疼呢?之前想用ListViewAnnotation来着,就是可以实现类似于android 通知栏滑动删除的效果.好像是一位大牛自己一个人写的吧.我在这里首先向他致敬.不过,话说回来,实现原理也是比较易于理解的,就是检测你的滑动距离以及速度,再作出判断,进行操作.具体大家参考下Google keep的两种列表模式下滑动删除的操作就理解类. 非常不幸的事,我再布局中用了fragment和biewpager,所以产生了手势冲突,我为此改写了library里的手势操作检测方法,最后勉强改

ListView之点击展开菜单

一.概述 ListView点击item显示菜单是要实现这样的效果: 需要实现的逻辑如下: 1)点击一个普通item,展开当前菜单,同时关闭其他菜单 2)点击一个已展开的菜单,隐藏当前菜单 3)将展开菜单滑到listview之外,再滑动回来,展开菜单状态不变 4)点击菜单中的按钮,能够根据不同item进行不同的处理 二.实现思路 1.UI布局上,对于这种每个listitem都包含动态显示菜单的场景,可以直接在listitem的xml布局里就包含两部分元素:item本身以及展开菜单 点击item的时

微信公众号 - 下拉(展开/隐藏)

1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compat

listview嵌套gridview,并实现grid元素部分显示以及点击展开与折叠

原文链接:http://blog.csdn.net/duguju/article/details/49538341 有时我们需要用GridView显示目录列表,有时甚至是二级的,即listview每一个item里面又各自嵌入一个gridview,但是当二级目录(数据条目)的数量过多时,界面会比较臃肿,这时我们就想要有类似展开与折叠的效果,作者采用的策略是数据分段的分别显示,其中对于显示边界(处于限制显示数目的特定位置)的控件要有数据的动态更新和点击判断操作.效果如图: 具体实现: 一.Activ

ListView item中按钮点击实现删除

ListView item中按钮点击实现删除 在处理ListView 中item的按钮点击事件首先需要在item的根布局中添加 android:descendantFocusability="blocksDescendants"属性,否则item的点击事件会把其中image button的点击事件屏蔽掉 item的布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

ListView的item中有button和checkbox,listview的点击事件无效

ListView的item中有button和checkbox,listview的点击事件无效,解决办法: 在item布局文件中的根控件中添加属性设置: android:descendantFocusability="blocksDescendants" 如果只能点击checkbox,而无法触发item的点击事件,那么可以禁掉checkbox的焦点获取,不让它可以点击就可以了 checkbox里面加 android:focusable="false" android:

Android ListView的item点击无响应的解决方法

如果listitem里面包括button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最常用的解决办法 是在listitem的布局文件中设置descendantFocusability属性. item的布局文件: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.andro

android listview item点击后,显示点击效果

最近遇到了一个问题,在用到listview时,想在listview的item点击后显示高亮的效果,但是在activity中写listview的onitemclick事件中写变色效果后,点击可以变色,但是在listview滑动后,这个效果竟然消失了?很是纠结,为什么呢?原因没有搞太懂,好像是在滑动的时候又触发了adapter,所以导致效果消失.后来找到一种解决办法,分享下: 在listview的adapter中添加如下方法: /**  * 增加用户点击时,获得位置,并改变颜色  * @param

精通RecyclerView:打造ListView、GridView、瀑布流;学会添加分割线、 添加删除动画 、Item点击事件

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53126706 本文出自[DylanAndroid的博客] 精通RecyclerView:打造ListView.GridView.瀑布流:学会添加分割线. 添加删除动画 .Item点击事件 在上一篇Android用RecyclerView练手仿美团分类界面写了RecyclerView的基本用法, 今天想想,在这里重新学习一下RecyclerView的完整用法.包括如何打造一个普