getView () - Methode von ArrayAdapter wiederholt die ersten zwei oder drei Einträge in der Liste

Erweiterte ich ein ArrayAdapter mit einer überschriebenen getView() Methode zu füllen meine ListView Objekt, aber der adapter greifen, werden die ersten zwei oder drei Objekte aus der ArrayList ich pass auf es, dann wiederholen Sie einfach diese in scheinbar zufälliger Reihenfolge für die gesamte Länge der Liste. Außerdem, wenn ich nach oben und unten Blättern in der ListView einige Zeilen ändern, aus einer Liste Element zu einem anderen. Die ArrayList<Credit> Objekt wird aufgefüllt, die aus einem JSONObject, und nach meinem besten wissen korrekt sind, bevor Sie ging in die ArrayAdapter.

Meine custom ArrayAdapter

private class CreditArrayAdapter extends ArrayAdapter<Credit> {
    private ArrayList<Credit> credits;
    private int creditCount;

    public CreditArrayAdapter(Context ctx, int textViewResourceId, List<Credit> items) {
        super(ctx, textViewResourceId, items);
        credits = (ArrayList<Credit>) items;
        creditCount = credits.size();
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View v = convertView;
        if (v == null) {
            LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            v = vi.inflate(R.layout.list_item_movie_medium, null);
            Credit current = credits.get(position);
            Log.d(tag, "current credit: " + current.toString());
            ImageView creditPicture = (ImageView) v.findViewById(R.id.image_poster_thumbnail);
            try {
                creditPicture.setImageBitmap(current.getPosterSmall());
            } catch(Exception e) {
                Log.d(tag, "failed to set cast member picture");
                e.printStackTrace();
            }
            TextView castMemberName = (TextView) v.findViewById(R.id.text_credit_info);
            castMemberName.setText(current.toString());
        }
        return v;
    }
    @Override
    public int getCount() {
        return creditCount;
    }
}

aufgerufen:

appearsIn = (ListView) findViewById(R.id.listview_appears_in);
List<Credit> credits = searcher.getCreditsByPersonId(personId);
CreditArrayAdapter creditAdapter = new CreditArrayAdapter(getBaseContext(), R.layout.list_item_movie_medium, credits);
creditAdapter.notifyDataSetChanged();
appearsIn.setAdapter(creditAdapter);

Das layout mit den ListView:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:layout_centerHorizontal="true"
              android:weightSum="2">
    <ScrollView android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1">
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                      android:layout_width="fill_parent"
                      android:layout_height="wrap_content"
                      android:orientation="vertical">
            <ImageView android:id="@+id/image_person_info"
                       android:layout_height="wrap_content"
                       android:layout_width="wrap_content"
                       android:contentDescription="person image"/>
            <TextView android:id="@+id/text_person_name"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:textSize="30dp"/>
            <TextView android:id="@+id/text_person_birth"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:textSize="20dp"/>
            <TextView android:id="@+id/text_person_death"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:textSize="20dp"/>
            <TextView android:id="@+id/text_person_bio"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:textSize="16dp"/>
        </LinearLayout>
    </ScrollView>

    <ListView android:id="@+id/listview_appears_in"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:layout_weight="1"/>
</LinearLayout>

Meiner Liste Artikel layout:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="horizontal">
    <ImageView android:id="@+id/image_poster_thumbnail"
               android:layout_height="wrap_content"
               android:layout_width="wrap_content"/>
    <TextView android:id="@+id/text_credit_info"
              android:layout_height="wrap_content"
              android:layout_width="fill_parent"/>
</LinearLayout>
InformationsquelleAutor Max | 2012-07-10
Schreibe einen Kommentar