android wikipedia - Aktualisieren der Listenansicht, wenn sich die Adapterdaten ändern




2 Answers

Ersatz:

mMyListView.invalidate();

zum:

((BaseAdapter) mMyListView.getAdapter()).notifyDataSetChanged(); 

Wenn das nicht funktioniert, lesen Sie den folgenden Thread: Aktualisierung der Android- Listenansicht

aktuelle version

Wenn die mit dem Array-Adapter verbundenen Daten geändert werden, reicht es aus, die Listenansicht zu ungültig zu machen, um die aktualisierten Werte anzuzeigen? Das folgende Code-Stück funktioniert nicht, habe ich etwas falsch verstanden?

public class ZeroItemListActivity extends Activity {
    private ArrayList<String> listItems=new ArrayList<String>();
    private ListView mMyListView;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mMyListView=(ListView) findViewById(R.id.MyListView);
        mMyListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,listItems));
    }
    public void addItem(View v){
        listItems.add("list Item");
        mMyListView.invalidate();
    }
}

Layout verwendet:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="@string/hello" />
    <ListView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:id="@+id/MyListView"></ListView>
    <Button android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:id="@+id/AddItemsButton"
        android:text="Add Items" android:onClick="addItem"></Button>
</LinearLayout>



invalidate(); ruft die Listenansicht auf, um sich selbst zu entwerten (dh Hintergrundfarbe)
invalidateViews(); ruft alle seine Kinder dazu auf, für ungültig erklärt zu werden. Damit können Sie die Kinderansichten aktualisieren

Ich nehme an, es ist eine Art von Effizienz, die verhindert, dass alle Elemente ständig neu gezeichnet werden müssen, wenn sie nicht notwendig sind.




Related

android

Tags

android