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

    }  

}

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

  1. ListView之点击展开菜单

    一.概述 ListView点击item显示菜单是要实现这样的效果: 需要实现的逻辑如下: 1)点击一个普通item,展开当前菜单,同时关闭其他菜单 2)点击一个已展开的菜单,隐藏当前菜单 3)将展开菜 ...

  2. Android ListView item 点击事件失效问题的解决

    关于ListView点击无效,item无法相应点击事件的问题,网上有很多, 大致可分为俩种情况, 一种是 item中存在 ImageButton 等可以点击的组件,这会抢先获得ListView的焦点. ...

  3. ListView点击Item展开隐藏项(单项展开、多项展开、复杂布局时的展开处理)

    手机屏幕毕竟有限,当我们要显示较多数据时便不得不舍去一些次要信息.将主要信息优先显示,也使显示效果更加简洁美观.遇到类似的需求,我们使用最多的就是 ListView ,而假设每次点击一个 Item 都 ...

  4. listview实现点击条目上的箭头展开隐藏菜单。

    效果如下图,当点击listview中的小三角时,显示出下面布局,再点隐藏, 点击其他条目的三角时,上一个展开的条目隐藏的同时展开当前条目. 思路是在item布局中放入展开菜单的布局,并设置状态为隐藏, ...

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

    原文链接:http://blog.csdn.net/duguju/article/details/49538341 有时我们需要用GridView显示目录列表,有时甚至是二级的,即listview每一 ...

  6. android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)

    1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为        2,为了使LISTVIEW的ITEM在点 ...

  7. jquery实现点击展开列表同时隐藏其他列表 js 对象操作 对象原型操作 把一个对象A赋值给另一个对象B 并且对象B 修改 不会影响 A对象

    这篇文章主要介绍了jquery实现点击展开列表同时隐藏其他列表的方法,涉及jquery鼠标事件及节点的遍历与属性操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了jquery实现点击 ...

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

    ListView的item中有button和checkbox,listview的点击事件无效,解决办法: 在item布局文件中的根控件中添加属性设置: android:descendantFocusa ...

  9. Android ListView中Item点击事件失效解决方案

    欢迎关注公众号,每天推送Android技术文章,二维码如下:(可扫描) 在平常的开发过程中,我们的ListView可能不只是简单的显示下文本或者按钮,更多的是显示复杂的布局,这样的话,我们就得自己写布 ...

随机推荐

  1. Windows cannot find ". Make sure you typed the name correctly, and then try again

    https://answers.microsoft.com/en-us/windows/forum/windows_10-desktop/windows-10-explorerexe-error-wi ...

  2. TFRecord —— tensorflow 下的统一数据存储格式

    tensorflow 提供了统一的数据存储格式,即 TFRecord(record 表示记录),以提高程序的可扩展性,当数据来源十分复杂时,仍能有效记录输入数据中的信息. 1. tfrecord 使用 ...

  3. P1824 进击的奶牛

    题目描述 Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN (0<=xi<=1,000,000 ...

  4. android事件学习

    一.android处理事件有两种形式. 1.基于监听的事件处理,就是通过setXxxListenter()进行处理的. 2.基于回调的事件处理,就是View类内部的onTouchEvent(),一般是 ...

  5. python之路:发附带文件的邮件

    发邮件的思路(借用第三方服务): 1.模拟服务器,其中有:服务器地址,发送者地址.发送者的密码 2.创建一个带附件的实例:1.创建一个massage 2.massage包括发送者的地址.接受者的地址. ...

  6. 搭建专属于自己的Leanote云笔记本

    搭建专属于自己的Leanote云笔记本 Leanote 依赖 MongoDB 作为数据存储,下面开始安装 MongoDB: 下载 MongoDB 进入 /home 目录,并下载 MongoDB: cd ...

  7. OCP-1Z0-051-题目解析-第27题

    27. Which two statements are true regarding tables? (Choose two.)  A. A table name can be of any len ...

  8. /dev/shm和swap差别与联系

    1.基本理论 /dev/shm这个文件是寄生虫,寄存在内存中 swap是暂时在硬盘中划分一个区域,把它作为内存使用 2.怎样查看 使用df -lh能够查看/dev/shm 使用free -m能够查看s ...

  9. WebMethod Description

    http://www.webxml.com.cn/WebServices/WeatherWebService.asmx https://www.cnblogs.com/wanganyi/p/72202 ...

  10. linux系统下的/proc目录介绍

    1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以 ...