Adapter中常见遇到的NullPointerException
来源:互联网 发布:光能使者知乎 编辑:程序博客网 时间:2024/06/07 15:21
Adapter原代码
private class MyAdapter extends BaseAdapter { @Override public int getCount() { return icons.length; } @Override public Object getItem(int position) { return icons[position]; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView= View.inflate(getApplicationContext(), R.layout.item_main, null); //获取组件 ImageView image = (ImageView) findViewById(R.id.iv_grid); TextView text = (TextView) findViewById(R.id.tv_grid); layout.findViewById(R.id.tv_grid); image.setImageResource(icons[position]); text.setText(names[position]); return convertView; } }
item_main.xml如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" tools:ignore="UseCompoundDrawables"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/iv_grid" android:src="@drawable/app" tools:ignore="ContentDescription"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_grid" android:text="@string/ruanjiang" android:textSize="15sp" android:textColor="#000000"/></LinearLayout>
error:
Process: com.example.safeapp, PID: 24231 java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setImageResource(int)' on a null object referenceat com.example.safeapp.MainActivity$MyAdapter.getView(MainActivity.java:76)at android.widget.AbsListView.obtainView(AbsListView.java:2365)at android.widget.GridView.onMeasure(GridView.java:1060)at android.view.View.measure(View.java:17565)...
分析:
调用'void android.widget.ImageView.setImageResource(int)'时遇到了空对象引用,往下看,嗯,发生在MainActivity内部类MyAdapter.getView方法中,双击(MainActivity.java:76)游标调到MainActivity.java的第76行,为:
image.setImageResource(icons[position]);
很容易可以知道是控件没找到,item_main.xml没有错误,可能是findViewById()处发生了错误
第一次更改:
@Override public View getView(int position, View convertView, ViewGroup parent) { convertView= View.inflate(getApplicationContext(), R.layout.item_main, null); //获取组件 ImageView image = (ImageView) convertView.findViewById(R.id.iv_grid); TextView text = (TextView) convertView.findViewById(R.id.tv_grid); image.setImageResource(icons[position]); text.setText(names[position]); return convertView; }
运行:
Process: com.example.safeapp, PID: 616 java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.View.getImportantForAccessibility()' on a null object referenceat android.widget.AbsListView.obtainView(AbsListView.java:2381)at android.widget.GridView.onMeasure(GridView.java:1060)at android.view.View.measure(View.java:17565)at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5545)...
分析:
调用'int android.view.View.getImportantForAccessibility()'时遇到了空对象引用,这个方法是判断view对无障碍的重要性,它遇到了空对象引用,就是说此view==null。好吧,加载view时可能遇到问题了。
再次更改之后:
@Override public View getView(int position, View convertView, ViewGroup parent) {// //空指针异常// convertView= View.inflate(getApplicationContext(), R.layout.item_main, null); LayoutInflater inflater = LayoutInflater.from(getApplicationContext()); convertView= (LinearLayout) inflater.inflate(R.layout.item_main, null); ImageView image = (ImageView) convertView.findViewById(R.id.iv_grid); TextView text = (TextView) convertView.findViewById(R.id.tv_grid); image.setImageResource(icons[position]); text.setText(names[position]); return convertView; } }
运行通过。
总结:
- View.inflate():找出 res/layout 下的 xml 布局文件填充到父布局,并且实例化,此时,仅仅在内存中创建了这个对象而已,在界面上不会显示出来这个对象
- setContentView():显示出xml布局的界面
LayoutInflater():动态载入xml布局的界面 参考: Android LayoutInflater详解http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html
findViewById():根据id获取布局文件中的布局和空间,只要使用android:id=”“属性的都可以使用此方法获取。默认是在主xml布局文件中查找,如果要动态加载的布局文件,则要在使用:
声明的布局名.findViewById(R.id.tv_grid)
如果您认为对你有所帮助,请扫一下,会记忆更牢靠哦
0 0
- Adapter中常见遇到的NullPointerException
- java中常见的NullPointerException异常
- java中常见的NullPointerException异常
- java中常见的NullPointerException异常
- java中常见的NullPointerException异常
- java中常见的NullPointerException异常
- adapter 中使用 getItemViewType 遇到的问题
- Hibernate中遇到的 NullPointerException问题和IllegalArgumentException
- androd的自定义Adapter中的NullPointerException
- android中Adapter有什么作用?常见的Adapter有哪些?
- android编程中遇到的关于 java.lang.NullPointerException错误的原因及解决办法
- 在使用DataBinding中遇到的一个奇葩的 java.lang.NullPointerException问题
- java.lang.NullPointerException 在SSH框架中编写增加功能遇到的问题
- java 编程中遇到空指针异常的可能原因java.lang.nullpointerexception
- findViewById中NullPointerException的错误
- android中使用smack库时,遇到错误:java.lang.NullPointerException
- Android开发中遇到Java.lang.NullPointerException解决办法
- 工作中遇到的问题之Adapter中列表的position位置错乱
- Android权限大全
- 排序算法之快速排序、归并排序(java实现)
- 本程序员要回家啦
- 浅谈当前情况下的视频内容收费
- Android Studio 表格布局实现登录界面
- Adapter中常见遇到的NullPointerException
- Python入门小项目
- hdu 5286 wyh2000 and sequence 分块
- 移动端H5 QQ在线客服链接代码
- 游戏编程模式:命令模式(Part I)
- 图论 problem a
- Matlab的数据输出
- poj 3046 dp计数 展开优化
- Heap算法详解