在ListView项Android上设置错误

时间:2013-08-22 06:30:28

标签: android android-listview

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

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

1 个答案:

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