ArrayList的空指针异常演奏与条件 [英] ArrayList Null Pointer Exception playing with Condition
本文介绍了ArrayList的空指针异常演奏与条件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
的ArrayList
NullPointerException异常(NPE)
而对于谷歌只有产品获取数据
下面就是我得到 NPE
行:
searchList.add(值); //获得NPE
日志:
02-24 14:25:35.903 17269-17269 / app.retrofit_chucknorries E / app.retrofit_chucknorries.MainActivity $ 2:ERROR:空
02-24 14:25:35.904 17269-17269 / app.retrofit_chucknorries W / System.err的:显示java.lang.NullPointerException
02-24 14:25:35.909 17269-17269 / app.retrofit_chucknorries W / System.err的:在app.retrofit_chucknorries.MainActivity.searchList(MainActivity.java:132)
02-24 14:25:35.909 17269-17269 / app.retrofit_chucknorries W / System.err的:在app.retrofit_chucknorries.MainActivity $ 1.call(MainActivity.java:57)
02-24 14:25:35.909 17269-17269 / app.retrofit_chucknorries W / System.err的:在app.retrofit_chucknorries.MainActivity $ 1.call(MainActivity.java:51)
02-24 14:25:35.909 17269-17269 / app.retrofit_chucknorries W / System.err的:在rx.Observable $ 32.onNext(Observable.java:7187)
02-24 14:25:35.909 17269-17269 / app.retrofit_chucknorries W / System.err的:在rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:130)
02-24 14:25:35.909 17269-17269 / app.retrofit_chucknorries W / System.err的:在rx.internal.operators.NotificationLite.accept(NotificationLite.java:150)
02-24 14:25:35.909 17269-17269 / app.retrofit_chucknorries W / System.err的:在rx.internal.operators.OperatorObserveOn $ ObserveOnSubscriber.pollQueue(OperatorObserveOn.java:189)
02-24 14:25:35.909 17269-17269 / app.retrofit_chucknorries W / System.err的:在rx.internal.operators.OperatorObserveOn $ ObserveOnSubscriber.access $ 000(OperatorObserveOn.java:65)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在rx.internal.operators.OperatorObserveOn $ ObserveOnSubscriber $ 2.call(OperatorObserveOn.java:153)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:47)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在android.os.Handler.handleCallback(Handler.java:808)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在android.os.Handler.dispatchMessage(Handler.java:103)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在android.os.Looper.loop(Looper.java:193)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在android.app.ActivityThread.main(ActivityThread.java:5299)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在java.lang.reflect.Method.invokeNative(本机方法)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在java.lang.reflect.Method.invoke(Method.java:515)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:829)
02-24 14:25:35.910 17269-17269 / app.retrofit_chucknorries W / System.err的:在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
02-24 14:25:35.911 17269-17269 / app.retrofit_chucknorries W / System.err的:在dalvik.system.NativeStart.main(本机方法)
JSON
{
类型:成功,
值:[
{
标识:1,
头衔:Nexus 9保护
产品:谷歌
},
{
ID:2,
头衔:iPhone 6S
产品:苹果
},
{
ID:3,
头衔:iPhone 5,
产品:苹果
},
{
ID:4,
头衔:的Nexus 7
产品:谷歌
}
]
}
现在,我只想获取数据
为产品
谷歌
公共无效searchList(){ 如果(searchList =空&放大器;!&放大器;!searchList.isEmpty()){
searchList.clear();
} 的for(int i = 0; I< valueList.size();我++){
值=(值)valueList.get(ⅰ); 串strProduct = valueList.get(ⅰ).getProduct(); 如果(strProduct.equalsIgnoreCase(strSearch)){
searchList.add(值); //获得NPE
}
} mAdapter =新MainAdapter(searchList,R.layout.card_row,getApplicationContext());
mRecyclerView.setAdapter(mAdapter); }
解决方案
它看起来像你从来没有实例化你的列表中使用。我想改变这样的方法将解决您的问题:
公共无效searchList(){ 如果(searchList == NULL){
searchList =新的ArrayList<>();
}其他{
searchList.clear();
} 的for(int i = 0; I< valueList.size();我++){
...
} mAdapter =新MainAdapter(searchList,R.layout.card_row,getApplicationContext());
mRecyclerView.setAdapter(mAdapter);}
ArrayList
NullPointerException (NPE)
while fetching data for the product of Google only
Here is the line where I am getting NPE
:
searchList.add(value); // getting NPE
Log:
02-24 14:25:35.903 17269-17269/app.retrofit_chucknorries E/app.retrofit_chucknorries.MainActivity$2: ERROR: null
02-24 14:25:35.904 17269-17269/app.retrofit_chucknorries W/System.err: java.lang.NullPointerException
02-24 14:25:35.909 17269-17269/app.retrofit_chucknorries W/System.err: at app.retrofit_chucknorries.MainActivity.searchList(MainActivity.java:132)
02-24 14:25:35.909 17269-17269/app.retrofit_chucknorries W/System.err: at app.retrofit_chucknorries.MainActivity$1.call(MainActivity.java:57)
02-24 14:25:35.909 17269-17269/app.retrofit_chucknorries W/System.err: at app.retrofit_chucknorries.MainActivity$1.call(MainActivity.java:51)
02-24 14:25:35.909 17269-17269/app.retrofit_chucknorries W/System.err: at rx.Observable$32.onNext(Observable.java:7187)
02-24 14:25:35.909 17269-17269/app.retrofit_chucknorries W/System.err: at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:130)
02-24 14:25:35.909 17269-17269/app.retrofit_chucknorries W/System.err: at rx.internal.operators.NotificationLite.accept(NotificationLite.java:150)
02-24 14:25:35.909 17269-17269/app.retrofit_chucknorries W/System.err: at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.pollQueue(OperatorObserveOn.java:189)
02-24 14:25:35.909 17269-17269/app.retrofit_chucknorries W/System.err: at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.access$000(OperatorObserveOn.java:65)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber$2.call(OperatorObserveOn.java:153)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:47)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at android.os.Handler.handleCallback(Handler.java:808)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at android.os.Handler.dispatchMessage(Handler.java:103)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at android.os.Looper.loop(Looper.java:193)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5299)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at java.lang.reflect.Method.invokeNative(Native Method)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at java.lang.reflect.Method.invoke(Method.java:515)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:829)
02-24 14:25:35.910 17269-17269/app.retrofit_chucknorries W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:645)
02-24 14:25:35.911 17269-17269/app.retrofit_chucknorries W/System.err: at dalvik.system.NativeStart.main(Native Method)
JSON
{
"type":"success",
"value":[
{
"id":1,
"title":"Nexus 9",
"product":"Google"
},
{
"id":2,
"title":"iPhone 6S",
"product":"Apple"
},
{
"id":3,
"title":"iPhone 5",
"product":"Apple"
},
{
"id":4,
"title":"Nexus 7",
"product":"Google"
}
]
}
Now, I just want to fetch data
for the product
Google
public void searchList() {
if(searchList != null && !searchList.isEmpty()) {
searchList.clear();
}
for (int i = 0; i < valueList.size(); i++) {
value = (Value) valueList.get(i);
String strProduct = valueList.get(i).getProduct();
if (strProduct.equalsIgnoreCase(strSearch)){
searchList.add(value); // getting NPE
}
}
mAdapter = new MainAdapter(searchList, R.layout.card_row, getApplicationContext());
mRecyclerView.setAdapter(mAdapter);
}
解决方案
It looks like you never instantiate your list to use. I think changing your method like this will fix your issue:
public void searchList() {
if (searchList == null) {
searchList = new ArrayList<>();
} else {
searchList.clear();
}
for (int i = 0; i < valueList.size(); i++) {
...
}
mAdapter = new MainAdapter(searchList, R.layout.card_row, getApplicationContext());
mRecyclerView.setAdapter(mAdapter);
}
这篇关于ArrayList的空指针异常演奏与条件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文