0

我有一个 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)

所以请帮我解决这个问题谢谢

4

1 回答 1

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] 时,它会给出空指针异常

于 2013-08-22T06:40:45.570 回答