关于adapter的getView的position问题

adapter的getview(int position, View convertView, ViewGroup parent)的缓存比较多,比如一页可以显示8个,0-7。那么向下滑动2个之后在getview只会有position8,和9,说明其他的调用的其他的缓存,如果按照一般拖动的实现,应该将上一次的图像生成个bitmap,具体还要看看源代码吧,还有convertView是否为null的规律

			Item item;
			if(convertView == null) {
				Log.d(TAG, "position>>"+position+">>convertivew null");
				FrameLayout layout = new FrameLayout(TestAdapterPosition.this);
				FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.FILL_PARENT, 60);
				TextView tt = new TextView(TestAdapterPosition.this);
				layout.addView(tt, lp);
				convertView = layout;
				item = new Item();
				item.t = tt;
				convertView.setTag(item); 
			}else{
				Log.d(TAG, "position>>"+position+">>convertivew is not null");
				item = (Item) convertView.getTag();
			}
TODO


///--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

说一下一个需求的解决,自绘的tab共有一个listview,要求每个tab记住listview已经scrolly位置,tab切回来的时候要还原位置。

从listview中取得adapter item的position好像比较方便,但是想随意取出对应position的view,从mListview.getSelectedView()靠谱,mAdapter.getView(int position, View convertView, ViewGroup parent)应该是对应的,但是位置都显示为0,最后mListview.getChildAt(0)计算偏移位置位置,配合mListview.getFirstVisiblePosition()记住position。还有一直没太搞懂这个适配器模式,我认为getchildAt()在listview不太好使呢,这里要注意的是getChildAt(0),它的0是从第一个可视的开始算,总共也就可视的那几个,超过了就返回为null了。代码如下:

			Rect rect = new Rect();
			if(mListview.getChildAt(0) != null) {
				mListview.getChildAt(0).getHitRect(rect);
			}
			mTabScrollY[tab] = rect.top;
			mTabPosition[tab] = mListview.getFirstVisiblePosition();
在tab切回来的时候重新定位

				mListview.setSelectionFromTop(mTabPostion[tab], mTabScrollY[tab]);






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值