Attempt to invoke virtual method 'int android.view.View.getImportantForAccessibility() 解决方案

此问题由adapter的getview引发

主要由于getview返回 convertview返回为null,

当判断covert!=null时 inflate.from()后 仍然报错

我们倒退一步,先来看看这个adapter是为什么类型的listview 设计的

首先这个adapter的item是只显示一种,还是有多种类型

A.当只有一种布局 则不用覆写getviewtype(int position ),此时确保创建的covertview不为null ,return时也不为null

B.当有多种布局时,例如以下getview()代码:

 1 @Override
 2     public int getViewTypeCount(){
 3         return 5;
 4     }
 5     @Override
 6     public View getView(int position, View convertView, ViewGroup parent) {
 7         if(null!=convertView)
 8         Logger.d("getview:::::"+position+"convertView:::::"+convertView.getTag());
 9         Logger.d("getview:::::"+position);
10         ScrollBannerViewHolder scrollBannerViewHolder=null;
11         HomeSectionViewRHolder homeSectionViewRHolder = null;
12         TVCinemaViewHolder tvCinemaViewHolder = null;
13         switch (getItemViewType(position)){
14             case VIEW_STYLE_POST:
15                 if(convertView==null){
16                     convertView = LayoutInflater.from(mContext).
17                             inflate(R.layout.active_header, null);
18                     scrollBannerViewHolder = new ScrollBannerViewHolder(mContext,convertView);
19                     convertView.setTag(scrollBannerViewHolder);
20                 }else{
21                     if(convertView.getTag() instanceof ScrollBannerViewHolder)
22                     scrollBannerViewHolder=(ScrollBannerViewHolder)convertView.getTag();
23                 }
24                 if (null != scrollBannerViewHolder)
25                     scrollBannerViewHolder.setViewPager(convertView,getItem(position));
26                 break;
27 
28             case VIEW_STYLE_TV_CINEMA:
29                 if(convertView==null){
30                     convertView= LayoutInflater.from(mContext).
31                             inflate(R.layout.active_header_second, null);
32                     tvCinemaViewHolder = new TVCinemaViewHolder(mContext,hrpf.getChildFragmentManager(),convertView);
33                     convertView.setTag(tvCinemaViewHolder);
34                 }else{
35                     if(convertView.getTag() instanceof TVCinemaViewHolder)
36                     tvCinemaViewHolder=(TVCinemaViewHolder)convertView.getTag();
37                 }
38                 if (null != tvCinemaViewHolder)
39                     tvCinemaViewHolder.setContentView(getItem(position),myJumpTab);
40                 break;
41             case VIEW_STYLE_NORMAL:
42                 if(convertView==null){
43                 convertView = LayoutInflater.from(mContext).
44                         inflate(R.layout.home_section_view_layout, null);
45                 homeSectionViewRHolder = new HomeSectionViewRHolder(mContext,convertView);
46                     convertView.setTag(homeSectionViewRHolder);
47                 }else{
48                     if(convertView.getTag() instanceof HomeSectionViewRHolder)
49                     homeSectionViewRHolder=(HomeSectionViewRHolder)convertView.getTag();
50                 }
51                 if (null != homeSectionViewRHolder)
52                     homeSectionViewRHolder.setContentView(getItem(position),myJumpTab);
53                 break;
54             case VIEW_STYLE_CLASS:
55                 if(convertView==null){
56                     convertView = LayoutInflater.from(mContext).
57                             inflate(R.layout.home_section_view_layout, null);
58                     homeSectionViewRHolder = new HomeSectionViewRHolder(mContext,convertView);
59                     convertView.setTag(homeSectionViewRHolder);
60                 }else{
61                     if(convertView.getTag() instanceof HomeSectionViewRHolder)
62                         homeSectionViewRHolder=(HomeSectionViewRHolder)convertView.getTag();
63                 }
64                 if (null != homeSectionViewRHolder)
65                     homeSectionViewRHolder.setContentView(getItem(position),myJumpTab);
66                 break;
67             case VIEW_STYLE_SPECIAL:
68                 if(convertView==null){
69                     convertView = LayoutInflater.from(mContext).
70                             inflate(R.layout.home_section_view_layout, null);
71                     homeSectionViewRHolder = new HomeSectionViewRHolder(mContext,convertView);
72                     convertView.setTag(homeSectionViewRHolder);
73                 }else{
74                     if(convertView.getTag() instanceof HomeSectionViewRHolder)
75                         homeSectionViewRHolder=(HomeSectionViewRHolder)convertView.getTag();
76                 }
77                 if (null != homeSectionViewRHolder)
78                     homeSectionViewRHolder.setContentView(getItem(position),myJumpTab);
79                 break;
80         }
81         return convertView;
82     }

注意当设置getViewTypeCount()返回值大于1时也就是说布局类型有多个,要确保case 判断的类型也有相应的个数,当前getViewTypeCount()返回为5,那么case判断类型的个数也为5个

否则也会出现空指针引发getImportantForAccessibility();

Adapter getview引发的int android.view.View.getImportantForAccessibility() 空指针

转载于:https://www.cnblogs.com/lotee/p/7267261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值