【问题标题】:Custom Listview View NullPointerException自定义 Listview 视图 NullPointerException
【发布时间】:2012-06-02 17:13:13
【问题描述】:

我有一个自定义 SimpleCursor listView 和 Chronometer。我尝试在 Chronometer(timer) 为 00:10 时绘制一行颜色,但它会抛出 NullPointerException。

感谢您的帮助 这是代码:

public class ListViewcursorActivity extends ListActivity {
/** Called when the activity is first created. */
Chronometer timer;
ListView lvItems;
SimpleCursorAdapter colours;
private testDBAdapter thisTestDBAdapter;
LinearLayout[] Row;
View[] v;
@Override
public void onCreate(Bundle savedInstanceState) {

    thisTestDBAdapter = new testDBAdapter(this);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    lvItems =getListView();fillData();

    timer = (Chronometer)findViewById(R.id.chronometer1);

    timer.setBase(android.os.SystemClock.elapsedRealtime());
    timer.start();

     Row =new LinearLayout[lvItems.getCount()];
     v = new View[lvItems.getCount()];
    for(int i=0;i<lvItems.getChildCount();i++) {
        v[i] =lvItems.getChildAt(i);
        Row[i] = (LinearLayout)v[i].getParent();    
    }
    timer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {

        public void onChronometerTick(Chronometer chronometer) {
            // TODO Auto-generated method stub
            for(int i=0;i<lvItems.getChildCount();i++){

            //  TextView child =(TextView)Row[i].getChildAt(0);
                if(  chronometer.getText().toString().equalsIgnoreCase("Timer: 00:10")){

                    try {
                        Row[1].setBackgroundColor(Color.RED);
                    } catch (NullPointerException e) {
                        // TODO Auto-generated catch block
                        Toast.makeText(ListViewcursorActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
                    }
                }

            }
    }
    });
}

问题是: // TextView child =(TextView)Row[i].getChildAt(0); 和 Row[1].setBackgroundColor(Color.RED);

    06-02 17:00:57.263: E/AndroidRuntime(869): Uncaught handler: thread main exiting due to uncaught exception
06-02 17:00:57.263: E/AndroidRuntime(869): java.lang.NullPointerException
06-02 17:00:57.263: E/AndroidRuntime(869):  at net.deneme.cursorlist.ListViewcursorActivity$1.onChronometerTick(ListViewcursorActivity.java:91)
06-02 17:00:57.263: E/AndroidRuntime(869):  at android.widget.Chronometer.dispatchChronometerTick(Chronometer.java:276)
06-02 17:00:57.263: E/AndroidRuntime(869):  at android.widget.Chronometer$1.handleMessage(Chronometer.java:268)
06-02 17:00:57.263: E/AndroidRuntime(869):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-02 17:00:57.263: E/AndroidRuntime(869):  at android.os.Looper.loop(Looper.java:123)
06-02 17:00:57.263: E/AndroidRuntime(869):  at android.app.ActivityThread.main(ActivityThread.java:4363)
06-02 17:00:57.263: E/AndroidRuntime(869):  at java.lang.reflect.Method.invokeNative(Native Method)
06-02 17:00:57.263: E/AndroidRuntime(869):  at java.lang.reflect.Method.invoke(Method.java:521)
06-02 17:00:57.263: E/AndroidRuntime(869):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-02 17:00:57.263: E/AndroidRuntime(869):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-02 17:00:57.263: E/AndroidRuntime(869):  at dalvik.system.NativeStart.main(Native Method)
06-02 17:00:57.273: I/dalvikvm(869): threadid=7: reacting to signal 3
06-02 17:00:57.273: E/dalvikvm(869): Unable to open stack trace file '/data/anr/traces.txt': Permission denied

【问题讨论】:

  • 你在哪一行得到空指针异常......请记录猫......
  • 问题是:TextView child =(TextView)Row[i].getChildAt(0);和 Row[1].setBackgroundColor(Color.RED);
  • 我想问要么 child 是 null 要么 Row[i] 是 null ......
  • 我只是试试,它是 Row[i]; Row[i] 为 null 它会引发 Null 指针异常

标签: android listview view viewgroup


【解决方案1】:
TextView child =(TextView) Row[i].getChildAt(0);

为什么不通过 id 获取呢?

LinearLayout row = (LinearLayout) Row[i];
if(row != null) {
    TextView textView = (TextView) row.findViewBy(R.id.textviewid);
    if(TextView != null)
       //do stuff
}

这有帮助吗?

还要深入了解代码 什么是 Row?线性布局对吗?这是一种不清楚的代码。也许组织得更好一些。

【讨论】:

【解决方案2】:

空指针异常通常意味着您正在尝试访问当前上下文中不存在的内容。

验证您的 XML 在 Java 代码中被正确引用。

【讨论】:

  • 很抱歉我无法添加 xml 文件。但我确信这与 xml 文件无关,谢谢
【解决方案3】:

我在onCreate 的任何地方都看不到适配器被设置为列表视图。设置适配器,看看它是否能解决问题。设置适配器后,将创建项目并且它们将具有父项。

【讨论】:

    【解决方案4】:

    对于空指针异常,你可以使用调试来跟踪空指针异常,它可以告诉你空指针异常发生在哪里。

    【讨论】:

    • okey,我知道为什么我得到 null,它是 lvItems.getChildAt(i) 它发送给我 null。但是我怎样才能生孩子呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多