PullToRefreshListView适配器加载不同的layout
来源:互联网 发布:python logger format 编辑:程序博客网 时间:2024/06/05 01:53
最近做项目是遇到了一个需求,就是pullToRefreshListView要加载不同的layout, 适配器代码如下:
/** * Created by user on 2016/1/14. */public class PageDetailAda extends BaseAdapter { private Context mContext; private CommunityDetailBean communityDetailBean; private List<CommentDetailBean> list; private LayoutInflater layoutInflater; private final int type1 = 0; private final int type2 = 1; ViewHolderCommu holderCommu; ViewHolderComment holderComment; public PageDetailAda(Context mContext, CommunityDetailBean communityDetailBean, List<CommentDetailBean> list) { this.communityDetailBean = communityDetailBean; this.list = list; this.layoutInflater = LayoutInflater.from(mContext); Log.e("pageDetailAda"," "+list.size()+" "+communityDetailBean.createtime); } @Override public int getCount() { return list.size()-1; } @Override public Object getItem(int position) { /* if (position == 1) { return communityDetailBean; } else { return list.get(position); }*/ return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { if (position == 1) { return type1; } else { return type2; } } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); Log.e("PageDetail"," getView"); if (convertView == null) { switch (type) { case type1: holderCommu = new ViewHolderCommu(); convertView = layoutInflater.inflate(R.layout.item_invitation_detail, null); holderCommu.nameTv = (TextView) convertView.findViewById(R.id.name); holderCommu.timeTv = (TextView) convertView.findViewById(R.id.time); holderCommu.nineGridLayout = (NineGridLayout) convertView.findViewById(R.id.nineGridLayout); holderCommu.icon = (ImageView) convertView.findViewById(R.id.img); convertView.setTag(holderCommu); break; case type2: convertView = layoutInflater.inflate(R.layout.item_remark_detail, null); holderComment = new ViewHolderComment(); holderComment.nameTv = (TextView) convertView.findViewById(R.id.name); holderComment.icon = (ImageView) convertView.findViewById(R.id.img); holderComment.likeCountTv = (TextView) convertView.findViewById(R.id.likeTv); holderComment.remarkTv = (TextView) convertView.findViewById(R.id.content); holderComment.timeTv=(TextView)convertView.findViewById(R.id.time); convertView.setTag(holderComment); break; } } else { switch (type) { case type1: holderCommu = (ViewHolderCommu)convertView.getTag(); break; case type2: holderComment = (ViewHolderComment) convertView.getTag(); break; } } switch (type) { case type1: holderCommu.nameTv.setText(communityDetailBean.user_nickname); holderCommu.timeTv.setText(communityDetailBean.createtime); break; case type2: holderComment.timeTv.setText(list.get(position).createtime); holderComment.nameTv.setText(list.get(position).user_nickname); holderComment.remarkTv.setText(list.get(position).text); break; } return convertView; } static class ViewHolderCommu { TextView nameTv; TextView timeTv; NineGridLayout nineGridLayout; ImageView icon; TextView focusingTv; } static class ViewHolderComment { TextView nameTv; TextView timeTv; ImageView icon; TextView likeCountTv; TextView remarkTv; }}
结果却报错了,错误信息如下:
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.widget.AbsListView$RecycleBin.addScrapView(AbsListView.java:6355)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4883)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3087)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.widget.AbsListView.onTouchEvent(AbsListView.java:3361)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.View.dispatchTouchEvent(View.java:7246)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2168)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1903)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2174)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1917)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1953)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1405)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.app.Activity.dispatchTouchEvent(Activity.java:2410)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1901)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.View.dispatchPointerEvent(View.java:7426)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3244)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3189)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4316)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4295)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4387)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:179)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:171)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:4366)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:4406)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:562)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:530)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:725)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:92)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5069)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
01-15 10:47:13.919 17012-17012/com.acfun.act E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
修改办法:将getViewType里面的type类型的值小于getTypeCount的返回值,比如type1=0,type2=1,而getTypeCount则返回2.即可解决,还有一种办法是适配器的布局用一个LinearLayout,然后根据position的判断来加载不同的layout.
- PullToRefreshListView适配器加载不同的layout
- ListView的不同item加载不同Layout
- ListView的不同item加载不同Layout
- 使用Volley的PullToRefreshListView分页加载
- Android 开发中,pullToRefreshListView 的刷新,加载
- PullToRefreshListView 中的PullToRefreshListView 加载Listview以后点击item无响应的解决办法
- PullToRefreshListView上下拉加载
- Android中PullToRefreshListView的下拉刷新,下拉加载的实现
- 关于PullToRefreshListView 上拉加载更多 的一个BUG
- 上拉刷新 下拉加载更多-PullToRefreshListView的简介
- 下拉刷新上拉加载之PullToRefreshListView的用法
- PullToRefreshListView的下拉刷新上拉加载更多问题
- 关于PullToRefreshListView 上拉加载更多 的一个BUG
- listview不同的项目布局(item layout)
- 检测新版本,PullToRefreshListView刷新,加载
- zend framework2 中不同模块使用不同layout的方法
- 加载不同的样式
- Zend Framework2 - Layout配置,不同模块Module设置不同的layout
- 几种进程间的通信方式
- JAVA学习笔记(2)
- Android多线程断点续传下载
- oracle 11gr2 11.2.0.4升级11.2.0.4.2
- spring aop 5 环绕通知around
- PullToRefreshListView适配器加载不同的layout
- 黑马程序员——方法总结之网编
- oslo.config
- CF Comparing Two Long Integers 616A
- 常用的正则表达式概述
- spring aop 6 环绕通知记录应用的日志
- 算法分析—最长公共子序列(LCS)
- strip,eu-strip 及其符号表,gdb调试strip过的程序
- 测试让NSLog失效