zoukankan      html  css  js  c++  java
  • 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);  
        }  
    }
  • 相关阅读:
    面条代码 vs. 馄沌代码
    GraphQL 到底怎么用?看看这个例子就知道了
    程序员难逃二八法则,如何晋升为头部 20% 玩家?
    正则匹配负正数和负小数
    js、Jquery处理自动计算的输入框事件
    mobile easyui兼容实体数据(tree插件为例)
    framework7中一行的字如果过多就省略号显示的CSS写法
    PHP获取系统时间不对的解决办法(转载)
    BZOJ 3156: 防御准备
    P4098 [HEOI2013]ALO
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4197213.html
Copyright © 2011-2022 走看看