我想使用数组适配器填充listview但是我总是得到空指针异常。这是主要行为的代码:
public class ListeCategorie extends Activity {
CategorieBDD categorie;
private ArrayList<Catégorie> list = new ArrayList<Catégorie>();
private AdapterCategorie myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
setContentView(R.layout.activity_liste_categorie);
ListView listview = (ListView) findViewById(R.id.listeoffre);
categorie = new CategorieBDD(ListeCategorie.this);
categorie.open();// c est pour autoriser l acces de lire de la base
// get all produits
list = (ArrayList<Catégorie>) categorie.getAllCategories();
myAdapter = new AdapterCategorie(ListeCategorie.this, list);
Log.i("testlog", list.size() + "");
listview.setAdapter(myAdapter);
myAdapter.setNotifyOnChange(true);
categorie.close();
} catch (Exception e) {
e.printStackTrace();
}
现在是适配器代码
public class AdapterCategorie extends ArrayAdapter {
private List<Catégorie> producteur;
private LayoutInflater myinflater;
Context context;
public AdapterCategorie(Context context, ArrayList<Catégorie> data) {
super(context, R.layout.listitem, data);
this.context = context;
this.producteur = data;
}
@Override
public View getView(int position, View ConvertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ConvertView = inflater.inflate(R.layout.listitem, parent, false);
TextView nom = (TextView) ConvertView.findViewById(R.id.nom);
TextView nompro = (TextView) ConvertView.findViewById(R.id.code);
nom.setText(producteur.get(position).getNomCatégorie());
return ConvertView;
现在是logcat
04-25 15:03:11.312: W/System.err(16710): at com.Consultation.applicationpfe.ListeCategorie.onCreate(ListeCategorie.java:31)
04-25 15:03:11.332: W/System.err(16710): at android.app.Activity.performCreate(Activity.java:5104)
04-25 15:03:11.332: W/System.err(16710): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
04-25 15:03:11.332: W/System.err(16710): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
04-25 15:03:11.332: W/System.err(16710): at android.app.ActivityThread.startActivityNow(ActivityThread.java:2023)
04-25 15:03:11.332: W/System.err(16710): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:135)
04-25 15:03:11.332: W/System.err(16710): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:347)
04-25 15:03:11.332: W/System.err(16710): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:749)
04-25 15:03:11.342: W/System.err(16710): at android.widget.TabHost.setCurrentTab(TabHost.java:413)
04-25 15:03:11.362: W/System.err(16710): at android.widget.TabHost.addTab(TabHost.java:240)
04-25 15:03:11.362: W/System.err(16710): at com.fiche.applicationpfe.Tabhost.onCreate(Tabhost.java:29)
04-25 15:03:11.382: W/System.err(16710): at android.app.Activity.performCreate(Activity.java:5104)
04-25 15:03:11.382: W/System.err(16710): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
我已经尝试过在其他类似帖子中提出的解决方案,例如setcontentview,检查listview是否为null并检查所使用的列表是否为空。