getview(getView方法如何使用)
本文目录
- getView方法如何使用
- baseadapter的getView方法是怎么用的
- android adapter 中getview方法不执行网上说是布局有问题谁能帮我看看布局有什么问题啊
- listview调用getview为什么会执行三次
- Android的Adapter的getVIew()
getView方法如何使用
举个例子吧:当系统 要显示一个gridview,gridview里有10个子元素,但界面只够显示5个,其它五个是你滚动的时候才出现。现如今显示了这个gridview,你怎么知道它显示的是哪五个呢,这个时候是不是要position?你有了position还不够啊,你还得控制显示它,比如现在显示的是4,5,6,7,8这五个你得更新显示这五个元素的uiandroid系统为了省内存,它会把第1,2,3 new出来的view传给你问你是不是要复用,这就是那个参数view的用途,如果你复用它,就将它返回(返回之前需重新设置这个view里的值如:更新view里的textView的显示等)。所以你会在getView里经常看到:if(vew=null){view=......}return view;
baseadapter的getView方法是怎么用的
getview是由framework调用的。如果要framework调用getview(),可以尝试用baseadapter.notifydatasetchanged()方法试试。在家的破电脑,暂不能尝试。gridview主要是为了快速开方,很多地方要自定义不是很方便。如果要更多的自主操作,可以用下面的形式。----------getview,只是在childview从屏幕外移到屏幕中的时候会被调用。当你移到倒数第二个childview的时候,实际上肯定是调用了最后一个childview的getview函数。你可以试试在getview中加入system.out.println("getview:"+position);
android adapter 中getview方法不执行网上说是布局有问题谁能帮我看看布局有什么问题啊
怎么可能不执行呢,adapter 中getview方法与布局是没多大关系的,你是自定义的adapter 的吧?一般需要初始化,myAdapter = new MyAdapter(this, itemRoad);的,你初始化没?你最好大哥断点或者logcat输出一下,看看是否执行。
listview调用getview为什么会执行三次
今天在做一个功能:在初始化ListView时,把第一行背景置为黄色,同时保存第一行对象,用于在点击其他行时将该行重新置为白色。if(position==0){convertView.setBackgroundColor(Color.YELLOW);lastconvertView=convertView;}结果运行时发现第一行的颜色一直会是黄色而无法改变。调试了之后发现getView中 if(position==0) 居然会多次进入,最终导致的结果便是我最后一次取得的lastconvertView并非listview上面的第一行。网上查了之后发现原因是因为未固定listview的高度导致的,但是root cause却找不到说明。于是去翻阅了源码+大量调试,大概推算出了原因,在此记录。首先是说明下ListView的显示机制,listview的机制是这样子的:假如你有1000条数据,但是屏幕只能显示10条,那么当你第一次加载显示的时候,会先创建10个View,1-10,当你拖动Listview,使1隐藏而11显示的时候,系统会自动把填充1的View传递过来,注意看代码Adapter的getView方法@Overridepublic View getView(final int position, View convertView, ViewGroup parent) 这里的converView就是1的view,一般的做法会把这个view拿来复用,作为11的view。当我们固定listview的高度时(fill_parent或直接固定高度),那么listview很容易就能计算出容器内可以显示多少行。但如果我们使用了“wrap_content”,只有在屏幕内控件完全加载后才知道到底能显示多少行数据时,ListView自身便会做一些尝试性计算。在源码中可以发现一些叫做onMeasure的方法,目测是做此用处(源码略显复杂,没读透)。当listview计算出屏幕一共需要多少行后,如果listview自身高度不变,那么它的容纳的行数就不会变,使用getChildCount()可以得到它的最大行数。再回到原来的问题,为什么最后一次取得的结果不是listview的第一行呢? 将listview设置为“wrap_content”后用下面的测试代码,看下输出。//获取当前listview的个数 相等输出个数和站点名 不相等输出个数和"无"if(listView.getChildCount() == position){//child个数 当前position位置 +站名Log.i("", listView.getChildCount()+" "+position+" "+coordInfo.stationname);}else {//child个数 当前position位置+无Log.i("", listView.getChildCount()+" "+position+" "+"无");}
Android的Adapter的getVIew()
ViewGroup parent 就是你设置adapter的那个组件里面封装一个viewGroup用来盛放itemposition就是你选择的 item的第几条从0开始convertView就是item上的布局layout或者组件重写Adaper要 extends BaseAdapter{}然后重写里面的方法 网上好多例子 但是要重写的方法的参数是不能该的 你可以在你重写的adapter的类里面 增加变量来实现数据的传递
更多文章:
相亲网哪个比较真实可靠(现在相亲网站哪个靠谱,相亲网站哪个靠谱)
2024年7月27日 07:00
复仇焰魂天赋(LOL复仇焰魂的9 0 21天赋是什么样求图)
2024年6月9日 17:34
satisfaction(satisfaction是什么意思)
2024年7月12日 15:15
getelementsbytagname(JavaScript:怎么获得页面元素的id和name值)
2024年7月11日 06:59