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. .Net经典笔试题

    1. 简述 private. protected. public. internal 修饰符的访问权限. 答:private:私有成员,在类的内部才可以访问: protected:保护成员,该类内部和 ...

  2. oracle之dbms_output

    oracle的dbms_output oracle的dbms_output的两个小问题 .如果dbms_output.put_line的内容不能显示,需要在命令行中先敲入set serveroutpu ...

  3. selenium 窗口句柄之间的切换

    以前使用selenium时都是在单窗口的模式下,本次新增多窗口下的窗口之间切换 from selenium import webdriver from selenium.webdriver.commo ...

  4. 织梦DedeCMS会员登录或退出后如何直接跳转到首页

    织梦dedecms默认情况下的会员登录后会直接跳转到会员中心,退出也是一样,但是如果我们想让会员登录后直接跳转到首页,那该如何实现呢? 经过我们的研究,已经找到解决办法,下面是详细的修改步骤: 首先在 ...

  5. vuex的mutations如何传多个传参?

    1.不传参时的写法(官网例子): const store = new Vuex.Store({ state: { count: 1 }, mutations: { increment (state) ...

  6. jquery表单动态添加元素及PHP处理

    tijiao.php页面代码: if(isset($_POST['cp1'])){    echo '<pre>';    print_r($_POST); $num=((count($_ ...

  7. snmpd修改端口

    http://blog.csdn.net/cau99/article/details/5077239 http://blog.csdn.net/gua___gua/article/details/48 ...

  8. python创建多层目录的方式

    将 os.mkdir 改成 os.makedirs(opDir) 哈.

  9. Viewpager切换时pager页面的生命周期变化

    总结1: 当我们把ViewPager和Fragment合用的时候,切换页面时生命周期会发生对应的变化.变化规律:载入当前页面.前一个页面和后一个页面.我们来看一个实际測试效果图 打开应用会载入第一个页 ...

  10. OpenCASCADE Job - 武汉中南

    中南设计集团(武汉)工程技术研究院有限公司是中南工程咨询设计集团有限公司(以下简称“中南设计集团”)打造的工程技术研发和科研创新平台,为中南设计集团旗下全资子公司,于2018年2月成立.公司业务范围涵 ...