P
padde83
Ambitioniertes Mitglied
- 0
Hallo und Guten Tag zusammen.
Ich arbeite gerade mit einer Kombination einer ListView und GridView und eine ViewFlipper.
Durch den ViewFlipper will ich dem Benutzer die Möglichkeit geben zwischen den beiden Views hin und her zu wechseln.
Die ListView wird als erstes geladen die XML-Struktur ist die folgende
In meiner Activity gehe ich so vor:
Die Adapter für beide Views habe ich angepasst.
Nun zu meinem Problem:
In der Activity werden die Adapter für die jeweiligen Views mehrmals direkt hintereinander aufgerufen.
Normal sollte es ja so sein, dass einmal der ListAdapter und einmal der GridAdapter aufgerufen wird.
Dies ist leider nicht der fall beide werden auch wenn nur ein Element in der Liste enthalten ist 4-6x aufgerufen.
Normal ist dies ja kein Problem aber im Adapter starte ich einen AsyncTask der somit auch unnötig oft aufgerufen wird.
Das führt zu einer RejectedExecutionException, wenn sich mehrere Elemente in der Liste befinden.
Ist es irgendwie möglich dies zu Unterbinden. Oder habe ich die Implementierung des Adapters falsch verstanden?
Gruß & Danke
padde83
Ich arbeite gerade mit einer Kombination einer ListView und GridView und eine ViewFlipper.
Durch den ViewFlipper will ich dem Benutzer die Möglichkeit geben zwischen den beiden Views hin und her zu wechseln.
Die ListView wird als erstes geladen die XML-Struktur ist die folgende
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ViewFlipper android:id="@+id/viewflipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:flipInterval="15000"
android:autoStart="false">
<include layout="@layout/listlayout"></include>
<include layout="@layout/gridlayout"></include>
</ViewFlipper>
</LinearLayout>
Code:
..
@Override
protected void onCreate(Bundle savedInstanceState)
ListView listView = (ListView) findViewById(R.id.list);
listView.setClickable(true);
listView.setAdapter(new ListAdapter(Activity.this, "oben genanntes Schema", elements)); //Enthält eine ArrayList mit elementen
listView.setOnScrollListener(new OnScrollListener(Activity.this));
listView.setOnItemClickListener(new OnItemClickListener()); //
GridView gridView = (GridView) findViewById(R.id.grid);
gridView.setClickable(true);
gridView
.setAdapter(new GridAdapter(Activity.this, "oben genanntes Schema", elements)); //Enthält eine ArrayList mit elementen
gridView.setOnItemClickListener(new OnItemClickListener(Activity.this));
Code:
public class ListAdapter extends ArrayAdapter<T>{
public ListAdapter(Context context, int viewId, List<T> objects)
{
super(context, viewId, objects);
this.context = context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if (convertView != null)
{
layout = (LinearLayout) convertView;
}
else
{
layout = (LinearLayout) LayoutInflater.from(getContext()).inflate(R.layout.listlayout, parent, false);
}
}
.... usw. start asyncTask
}
Nun zu meinem Problem:
In der Activity werden die Adapter für die jeweiligen Views mehrmals direkt hintereinander aufgerufen.
Normal sollte es ja so sein, dass einmal der ListAdapter und einmal der GridAdapter aufgerufen wird.
Dies ist leider nicht der fall beide werden auch wenn nur ein Element in der Liste enthalten ist 4-6x aufgerufen.
Normal ist dies ja kein Problem aber im Adapter starte ich einen AsyncTask der somit auch unnötig oft aufgerufen wird.
Das führt zu einer RejectedExecutionException, wenn sich mehrere Elemente in der Liste befinden.
Ist es irgendwie möglich dies zu Unterbinden. Oder habe ich die Implementierung des Adapters falsch verstanden?
Gruß & Danke
padde83