【问题标题】:Getting NullPointerException while using bsAdapter.getView()使用 bsAdapter.getView() 时出现 NullPointerException
【发布时间】:2013-12-19 12:30:01
【问题描述】:
public View getView( final int position, View convertView, ViewGroup parent)
        {

            LayoutInflater inflater=cntx.getLayoutInflater();
            View row = inflater.inflate(R.layout.simplerow, null);
          //  row=inflater.inflate(R.layout.simplerow, parent, false);

            DecimalFormat df = new DecimalFormat("#.##");
            final TextView title    =   (TextView)row.findViewById(android.R.id.title);
             TextView tvcol1    =   (TextView)row.findViewById(R.id.colortext01);


            TextView gt     =   (TextView)row.findViewById(R.id.text01);


           tvcol1.setHeight(grossheight[position]);

           title.setText(datelabel[position]);


           gt.setText(df.format(grossSal[position])+" /-");

 return row;
        }

LogCat@

java.lang.NullPointerException
       at com.pawan.my2dchart1.MyChart$bsAdapter.getView(MyChart.java:109)
       at com.pawan.my2dchart1.HorizontalListView.fillListRight(HorizontalListView.java:239)
       at com.pawan.my2dchart1.HorizontalListView.fillList(HorizontalListView.java:224)
       at com.pawan.my2dchart1.HorizontalListView.onLayout(HorizontalListView.java:201)
       at android.view.View.layout(View.java:14289)
       at android.view.ViewGroup.layout(ViewGroup.java:4562)
       at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
       at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1660)
       at android.widget.LinearLayout.onLayout(LinearLayout.java:1436)
       at android.view.View.layout(View.java:14289)
       at android.view.ViewGroup.layout(ViewGroup.java:4562)
       at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
       at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
       at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
       at android.view.View.layout(View.java:14289)
       at android.view.ViewGroup.layout(ViewGroup.java:4562)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
       at android.widget.ScrollView.onLayout(ScrollView.java:1459)
       at android.view.View.layout(View.java:14289)
       at android.view.ViewGroup.layout(ViewGroup.java:4562)
       at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1076)
       at android.view.View.layout(View.java:14289)
       at android.view.ViewGroup.layout(ViewGroup.java:4562)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
       at android.view.View.layout(View.java:14289)
       at android.view.ViewGroup.layout(ViewGroup.java:4562)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
       at android.view.View.layout(View.java:14289)
       at android.view.ViewGroup.layout(ViewGroup.java:4562)
       at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)
       at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)
       at android.widget.LinearLayout.onLayout(LinearLayout.java:1434)
       at android.view.View.layout(View.java:14289)
       at android.view.ViewGroup.layout(ViewGroup.java:4562)
       at android.widget.FrameLayout.onLayout(FrameLayout.java:448)
       at android.view.View.layout(View.java:14289)
       at android.view.ViewGroup.layout(ViewGroup.java:4562)
       at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
       at android.view.Choreographer.doCallbacks(Choreographer.java:562)
       at android.view.Choreographer.doFrame(Choreographer.java:532)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
       at android.os.Handler.handleCallback(Handler.java:730)
       at android.os.Handler.dispatchMessage(Handler.java:92)
       at android.os.Looper.loop(Looper.java:137)
       at android.app.ActivityThread.main(ActivityThread.java:5103)
       at java.lang.reflect.Method.invokeNative(Native Method)
       at java.lang.reflect.Method.invoke(Method.java:525)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
       at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 很高兴知道第 109 行是什么!
  • 您的简单行是否包含:(android.R.id.title);?
  • 第 109 行:title.setText(datelabel[position]);
  • 您的布局中的元素是否包含 id android.R.id.title?
  • 伙计们,我是这个门户的新用户,但最常访问以获取解决方案。好吧,它是跨平台移动应用程序开发框架之一所期望的包装器代码。在集成核心代码时,遇到了上述错误。找不到合适的解决方案,因为在构建时它完美,但在运行时面临 NullPointerException

标签: android android-listview android-adapter


【解决方案1】:

试试这个代码

@Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        if (convertView == null) {
            View listView = new View(c);
            LayoutInflater inflater;
            listView = inflater.inflate(R.layout.simplerow,null);
        } else
            listView = (View) convertView;

         DecimalFormat df = new DecimalFormat("#.##");
         final TextView title    =   (TextView)row.findViewById(R.id.title);
        TextView tvcol1    =   (TextView)row.findViewById(R.id.colortext01);
        TextView gt     =   (TextView)row.findViewById(R.id.text01);
        tvcol1.setHeight(grossheight[position]);
        title.setText(datelabel[position]);
        gt.setText(df.format(grossSal[position])+" /-");
        return listView;
    }

【讨论】:

    【解决方案2】:

    由于您说(在问题的 cmets 中)NullPointerException 发生在第 title.setText(datelabel[position]); 行,因此有 2 个可能的来源可能导致该错误。

    可能的原因 1: 名为 titleTextViewnull。仅当您膨胀错误的布局(即不包含 ID 为 R.id.titleTextView 的布局)时,才会在您的情况下发生这种情况。所以解决方案是检查R.layout.simplerow 是否包含ID 为R.id.titleTextView

    可能原因 2:datelabel 数组可能是 null,所以请确保正确启动它。

    请注意,如果您在自定义 Adapter 中使用 View Holder 模式,这将是一个巨大的性能提升。请参阅here 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2013-12-29
      • 2022-01-19
      • 2013-04-13
      • 2014-11-11
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多