我有一个listData用于创建listview。之后点击按钮我一次更新特定项目的listview数据。我在数组updatedlistData中的每次更新后存储。所以现在我要比较以前的数组数据,即listData和updatedlistData,以及在我想要显示错误的项目上尚未更新值的位置。请更新值。那么我可以在ListView的项目上设置错误吗?我试着使用这段代码:
BaseAdapter代码以创建ListvIew
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
View row;
row = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
TextView value;
value = (TextView) row.findViewById(android.R.id.text1);
value.setText(Value[position]);
return (row);
}
OnClick 我正在比较
check = (Button)findViewById(R.id.checkData);
check.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
for(int i=0;i< listData.length;i++){
for(int j=0;j<updatedlistData;j++){
if(listData[i]==updatedlistData[j]){
View v=listView.getChildAt(i);
TextView tv=(TextView) v.findViewById(android.R.id.text1);
tv.setError("Please change the data");
}
}
}
});
所以我得到例外
08-22 10:29:03.633: E/AndroidRuntime(3546): FATAL EXCEPTION: main
08-22 10:29:03.633: E/AndroidRuntime(3546): java.lang.NullPointerException
08-22 10:29:03.633: E/AndroidRuntime(3546): at com.example.activityMain.MainActivity$1.onClick(MainActivity.java:110)
08-22 10:29:03.633: E/AndroidRuntime(3546): at android.view.View.performClick(View.java:4091)
08-22 10:29:03.633: E/AndroidRuntime(3546): at android.view.View$PerformClick.run(View.java:17072)
08-22 10:29:03.633: E/AndroidRuntime(3546): at android.os.Handler.handleCallback(Handler.java:615)
08-22 10:29:03.633: E/AndroidRuntime(3546): at android.os.Handler.dispatchMessage(Handler.java:92)
08-22 10:29:03.633: E/AndroidRuntime(3546): at android.os.Looper.loop(Looper.java:153)
08-22 10:29:03.633: E/AndroidRuntime(3546): at android.app.ActivityThread.main(ActivityThread.java:4987)
08-22 10:29:03.633: E/AndroidRuntime(3546): at java.lang.reflect.Method.invokeNative(Native Method)
08-22 10:29:03.633: E/AndroidRuntime(3546): at java.lang.reflect.Method.invoke(Method.java:511)
08-22 10:29:03.633: E/AndroidRuntime(3546): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:821)
08-22 10:29:03.633: E/AndroidRuntime(3546): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
08-22 10:29:03.633: E/AndroidRuntime(3546): at dalvik.system.NativeStart.main(Native Method)
所以请帮我解决这个问题谢谢
答案 0 :(得分:0)
问题是嵌套forloop。你不需要两个for循环。
for(int i=0;i< listData.length;i++){
if(listData[i]==updatedlistData[i]){
View v=listView.getChildAt(i);
TextView tv=(TextView) v.findViewById(android.R.id.text1);
tv.setError("Please change the data");
}
}
然后你需要检查updatelistData的长度是否小于listdata,因为在这种情况下当你访问updatedlistData [i]时它会给出空指针异常