列表视图的itemclick事件的Nullpointerexception

时间:2013-04-01 08:08:30

标签: android

protected void onResume(){
        listTimer = (ListView) findViewById(R.id.listTimer);
        fetchData();
        tadapt = new TimerAdapter(RoutineList, this);
        listTimer.setAdapter(tadapt);
        listTimer.performItemClick(v1, 0, listval);
        super.onResume();
    }

listTimer.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                // TODO Auto-generated method stub


                v1 = arg0;
                pos = arg2;
                listval = arg3;
                View v = arg0.getChildAt(arg2);
                TextView tvM = (TextView) v.findViewById(R.id.tvETimer);
}

注意:我在View上获得了Nullpointerexception。

4 个答案:

答案 0 :(得分:5)

视图已经在变量arg1中..无需再次分配给另一个变量v ..

试试这个......

listTimer.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub

            v1 = arg0;
            pos = arg2;
            listval = arg3;
            TextView tvM = (TextView) arg1.findViewById(R.id.tvETimer);
}

答案 1 :(得分:2)

检查您是否在onResume方法之前调用了setContentView,并且该布局包含listTimer。这可能是您的观点为null的原因。

答案 2 :(得分:1)

首先,始终将super.onResume()作为Activity.onResume()方法的第一个陈述。

当您使用findViewById() ListView设置OnItemClickListener时也是如此。 我认为它会解决你的问题。

答案 3 :(得分:1)

尝试替换此字符串:

View v = arg0.getChildAt(arg2);

View v = arg1;