我有一个内置ListView
的{{1}}。该菜单允许用户重命名ContextMenu
中的商品属性。</ p>
但是,在向下滚动并重新启动时,旧名称会再次出现。
我理解为什么:TextView
没有更新。
例如:在adapter
中,每行都有一个对象:adapter
。然后有一个名为Review
的属性。
所以在name
我这样做:
getView()
现在,如果用户从Review r = getItem(position);
name = r.name;
myTextView.setText(name);
(通过TextView
)更新Fragment
,我该如何访问此属性(名称)并更新ContextMenu
/对象相同的位置?
答案 0 :(得分:1)
要获取在listView中创建了contextMenu的位置,您可以尝试以下操作。
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
int position = (int) info.id;
// This is the position in the ListView for which contextMenu was created.
// get and update your object and notify the adapter.
Review r = myListView.getAdapter().getItem(position);
r.name = "whatever new thing";
myListView.getAdapter(). notifyDataSetChanged();
}
在此代码中,我们使用新值更新Review
中的Adapter
对象,并通知适配器已发生的更改。这将依次刷新您的列表,并将使用刚刚提供的新值。