listview的问题,position的值是0~6循环的,item很多,我要对最后一个item操作,要怎么判断是最后一个item

枸杞泡水 2015-09-17 05:26:31
//求大神帮忙,想了一天,实在想不出更好的解决办法
//备注:我知道删除view == null这个判断,position就不会循环了,可以通过position判
//断是不是最后一个item,但这样会一直建view,我想问有没有更好的办法
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = View.inflate(mContext, R.layout.item_schedule, null);

//这里是写了很多布局代码

view.setTag(item);
} else {
item = (ScheduleItem) view.getTag();
}

if(这里想判断一下是最后一个item,然后对这个item内的布局进行操作){
item.schedule_line.setBackgroundColor(Color.WHITE);
}
//这里写了textview之类的控件的内容的赋值语句

return view;
}
...全文
172 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
枸杞泡水 2015-09-18
  • 打赏
  • 举报
回复
引用 3 楼 Li_Jun__ 的回复:
[quote=引用 2 楼 Li_Jun__ 的回复:] position 的最大值就是最后一个 item。

		if (position == datas.size()-1) {
			item.schedule_line.setBackgroundColor(Color.WHITE);
		} else {
			item.schedule_line.setBackgroundColor("此处需要设置为默认颜色");
		}
[/quote] 干的漂亮,想通了,3Q! 错误原因:position == datas.size()-1这个方法我也试过,结果不对,还以为是错的。而且我是要同一个listview里切换着显示3个不同的datas的,当时我是这样的
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = View.inflate(mContext, R.layout.item_schedule, null);
//这里是写了很多布局代码
 if(position == datas.size()-1){
 item.schedule_line.setBackgroundColor(Color.WHITE);
}
view.setTag(item);
} else {
item = (ScheduleItem) view.getTag();
}
//这里写了textview之类的控件的内容的赋值语句
return view;
}
解决办法:1、赋值的语句放到view == null判断外。2、切换时,其他item要还原到默认状态
public View getView(int position, View view, ViewGroup parent) {
if (view == null) {
view = View.inflate(mContext, R.layout.item_schedule, null);
//这里是写了很多布局代码
view.setTag(item);
} else {
item = (ScheduleItem) view.getTag();
}
//这里写了textview之类的控件的内容的赋值语句
 if(position == datas.size()-1){
 item.schedule_line.setBackgroundColor(Color.WHITE);
}else{
item.schedule_line.setBackgroundColor("此处需要设置为默认颜色");
}
return view;
}
逆转星河 2015-09-17
  • 打赏
  • 举报
回复
你传到adpter里的一个存数据的集合假设是datas,的长度可以用datas.size()得到,最后一个item的下标positipn=datas.size()-1.
=10_01= 2015-09-17
  • 打赏
  • 举报
回复
引用 2 楼 Li_Jun__ 的回复:
position 的最大值就是最后一个 item。

		if (position == datas.size()-1) {
			item.schedule_line.setBackgroundColor(Color.WHITE);
		} else {
			item.schedule_line.setBackgroundColor("此处需要设置为默认颜色");
		}
=10_01= 2015-09-17
  • 打赏
  • 举报
回复
position 的最大值就是最后一个 item。
开发者_android 2015-09-17
  • 打赏
  • 举报
回复
显示的不是数据源的数据嘛,如果position==数据源的大小-1不就可以了。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧