4

OnItemClickListenerfor aListViewには、次の方法があります。

@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)

ListView更新の背後にアダプターが必要です。これは、次を使用して行われると思います。

BaseAdapter.notifyDataSetChanged()

これを行うには、メソッドでparentパラメーターを使用するにはどうすればよいですか?onItemClickこれまでに試しました:

parent.getAdapter().notifyDataSetChanged();

返されるオブジェクトはクラスHeaderViewListAdapterであるため、これはエラーをスローします。これは、理由が不明なため、のサブクラスではありませんBaseAdapter

4

5 に答える 5

5

次のコードフラグメントに示すように、カスタムアダプタを介してBaseAdapterにアクセスすることもできます。

public class HeaderViewListAdapter extends BaseAdapter {

...

  @Override
  public void notifyDataSetChanged() {
    super.notifyDataSetChanged();
  }

...
}
于 2011-03-16T15:03:14.780 に答える
5

返されるオブジェクトはHea​​derViewListAdapterクラスであるため、これはエラーをスローします。これは、理由が不明なため、BaseAdapterのサブクラスではありません。

((BaseAdapter) ((HeaderViewListAdapter)listView.getAdapter()).getWrappedAdapter()).notifyDataSetChanged();
于 2014-07-02T06:04:38.150 に答える
2

AFAIK、HeaderListViewにはデータの更新/再読み込みのためのメソッドはありません。これを行うために私が考えることができる唯一の方法は、アダプターを再割り当てすることです。

于 2010-05-19T17:04:31.227 に答える
2

カーソルを操作するときに、アダプタクライアントを更新するためにメソッドを呼び出す必要はありません。代わりに、操作後は、を使用して「変更を通知」する必要がありますgetContentResolver().notifyChange(uri, null);

例えば:

context.getContentResolver().update(SomeURI.CONTENT_URI, values, null,null);
context.getContentResolver().notifyChange(SomeURI.CONTENT_URI, null);

カスタムviewclient (Listview, Gridview, Whatever)アダプタを使用しているかどうかに関係なく、自動的に変更されます。この助けを願っています。

于 2011-02-22T03:59:47.003 に答える
0

私ははるかに簡単な方法を見つけました..完全なcreateメソッドをリロードする呼び出しthis.onCreate(null)だけですが、アクティビティは同じままです。

于 2011-06-19T11:48:15.850 に答える