Hallo :)
Ich habe ein Problem und hoffe auf eure Hilfe… ärgerlich an dem Problem ist, dass es etwas kleines aber entscheidendes zu sein scheint, zu dem ich aber in Google und Foren einfach nichts finden konnte.
Ich möchte eine einfache ListView erstellen. Wenn ich diese in der MainActivity erstellen lasse, klappt alles wunderbar. Sobald ich aber versuche, sie nicht dort sondern in einer neuen Activity mit neuem Layout zu erstellen, funktioniert es nicht mehr. Das kuriose ist, dass es der gleiche Quelltext ist, ich bin ihn Punkt für Punkt durchgegangen.
Ich habe den Quelltext versuchsweise auskommentiert und konnte das Problem auf den markierten Part zurückführen. Wenn der auskommentiert ist, stürzt die App beim Öffnen der neuen Activity nicht ab.
Ich hoffe auf eure Hilfe…
Liebe Grüße,
Katharina
ObjektListActivity.java
package com.example.meineapp;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class ObjektListActivity extends Activity{
private List<Objekt>dieObjekte= new ArrayList<Objekt>();
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_layout);
populateObjektList();
populateListView();
registerClickCallback();
}
private void populateObjektList(){
dieObjekte.add(new Objekt("Objekt 1", R.drawable.ic_launcher));
dieObjekte.add(new Objekt("Objekt 2", R.drawable.ic_launcher));
dieObjekte.add(new Objekt("Objekt 3", R.drawable.ic_launcher));
dieObjekte.add(new Objekt("Objekt 4", R.drawable.ic_launcher));
dieObjekte.add(new Objekt("Objekt 5", R.drawable.ic_launcher));
}
//*******Wenn man den folgenden Teil auskommentiert gibt es keine Probleme**********
private void populateListView(){
ArrayAdapter<Objekt>adapter = new MyListAdapter();
ListView list=(ListView) findViewById(R.id.listView1);
list.setAdapter(adapter);
}
private class MyListAdapter extends ArrayAdapter<Objekt>{
public MyListAdapter(){
super(ObjektListActivity.this, R.layout.item_view, dieObjekte);
}
@Override
public View getView(int position, View ConvertView, ViewGroup parent){
View itemView=ConvertView;
if (itemView==null){
itemView=getLayoutInflater().inflate(R.layout.item_view, parent, false);
}
Objekt currentObjekt= dieObjekte.get(position);
ImageView imageView = (ImageView) itemView.findViewById (R.id.item_icon);
imageView.setImageResource(currentObjekt.getIconID());
TextView bezText = (TextView) itemView.findViewById (R.id.item_txtBezeichnung);
bezText.setText(currentObjekt.getBez());
return itemView;
}
}
private void registerClickCallback(){
ListView list=(ListView) findViewById(R.id.listView1);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View ViewClicked, int position, long id) {
Objekt clickedObjekt=dieObjekte.get(position);
String message="Position "+position+" Objektbezeichnung: "+ clickedObjekt.getBez();
Toast.makeText(ObjektListActivity.this, message, Toast.LENGTH_LONG).show();
}
});
}
//*****************Ende des Teils*****************************************
}
Alles anzeigen
Zur Orientierung ein Auszug aus MainActivity.java und Objekt.java:
Auszug aus MainActivity.java
private void populateGridView(){
GridView gridView = (GridView)findViewById(R.id.grid_view);
gridView.setAdapter(new ImageAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id){
if (position==0) {
setContentView(R.layout.activity_main);
}
if (position==1) {
setContentView(R.layout.activity_main);
TextView titel = (TextView)findViewById(R.id.textView1);
TextView text=(TextView)findViewById(R.id.textView2);
titel.setText(getString(R.string.titel));
text.setText(getString(R.string.text));
}
if (position==2){
startActivity(new Intent(MainActivity.this, TabActivityKarte.class));
}
if (position==3){
startActivity(new Intent(MainActivity.this, TabActivitySteckbriefe.class));
}
if (position==4){
startActivity(new Intent(MainActivity.this, ObjektListActivity.class));
}
}
});
}
Alles anzeigen
Hier kann der Fehler aber meines Erachtens nicht liegen, da bei Anklicken der Positionen 0 bis 3 die neuen Activitys samt Layout problemlos geöffnet werden.
Objekt.java