Android 我 运行 时出现 ListView 错误

Android ListView Error when i run

我是初学者 android 开发人员,我需要帮助! 我希望当我单击页面图标并且 Intent 开始时显示保存到 Offer 中的数据 table 我在 android studio 中编写这段代码:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_froyo);
        //setHeader(getString(R.string.FroyoActivityTitle), true, true);
        String[] myOffers=new String[20];
        int counter=0;




        SQLiteDatabase myDB=openOrCreateDatabase("MYOFFER",MODE_PRIVATE,null);
        Cursor c=myDB.rawQuery("SELECT * FROM offer", null);
        StringBuffer buffer=new StringBuffer();
        String myCID = null;
        while(c.moveToNext())
        {
            //myCID=c.getString(0);
            myOffers[counter]=c.getString(0);
            Log.d("my Offer=",c.getString(0));
            Log.d("And Counter=", String.valueOf(counter));
            counter++;

        }
        //String[] countryArray = {"India", "Pakistan", "USA", "UK"};

        ListView listview=(ListView) findViewById(R.id.myOfferList);

        ArrayAdapter adapter = new ArrayAdapter<String>(this,
                R.layout.offershow, myOffers);
        listview.setAdapter(adapter);




    }

当 运行 项目出现此错误时:

01-31 08:34:38.972    1080-1080/com.technotalkative.viewstubdemo E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)
            at android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)
            at android.widget.AbsListView.obtainView(AbsListView.java:2271)
            at android.widget.ListView.makeAndAddView(ListView.java:1769)
            at android.widget.ListView.fillDown(ListView.java:672)
            at android.widget.ListView.fillFromTop(ListView.java:733)
            at android.widget.ListView.layoutChildren(ListView.java:1622)
            at android.widget.AbsListView.onLayout(AbsListView.java:2106)
            at android.view.View.layout(View.java:13754)
            at android.view.ViewGroup.layout(ViewGroup.java:4364)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649)

当我替换这一行时:

String[] countryArray = {"India", "Pakistan", "USA", "UK"};

        ListView listview=(ListView) findViewById(R.id.myOfferList);

        ArrayAdapter adapter = new ArrayAdapter<String>(this,
                R.layout.offershow, countryArray);
        listview.setAdapter(adapter);

我的项目终于成功了!但是发生了什么?

这里:

    String[] myOffers=new String[20];

可能 myOffers 某些项目是 null,所以适配器显示 NullPointerException。使用c.getCount()定义数组大小:

    Cursor c=myDB.rawQuery("SELECT * FROM offer", null);
    String[] myOffers=new String[c.getCount()];