4

一个OnItemClickListenerfor aListView有以下方法:

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

我希望在ListView刷新后使用适配器,我相信这是通过使用以下方式完成的:

BaseAdapter.notifyDataSetChanged()

如何使用方法中的parent参数onItemClick来执行此操作?到目前为止,我已经尝试过:

parent.getAdapter().notifyDataSetChanged();

这会引发错误,因为返回的对象是 class HeaderViewListAdapter,由于未知原因,它不是 的子类BaseAdapter

4

5 回答 5

5

这会引发错误,因为返回的对象属于 HeaderViewListAdapter 类,由于未知原因,它不是 BaseAdapter 的子类。

((BaseAdapter) ((HeaderViewListAdapter)listView.getAdapter()).getWrappedAdapter()).notifyDataSetChanged();
于 2014-07-02T06:04:38.150 回答
5

您还可以通过自定义适配器访问 BaseAdapter,如以下代码片段所示:

public class HeaderViewListAdapter extends BaseAdapter {

...

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

...
}
于 2011-03-16T15:03:14.780 回答
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

我发现了更简单的方法 ..just 调用this.onCreate(null)将重新加载完整的创建方法,但活动保持不变。

于 2011-06-19T11:48:15.850 回答