从活动/片段更改适配器属性

时间:2013-06-09 21:25:18

标签: android listview adapter

我有一个内置ListView的{​​{1}}。该菜单允许用户重命名ContextMenu中的商品属性。<​​/ p>

但是,在向下滚动并重新启动时,旧名称会再次出现。

我理解为什么:TextView没有更新。

例如:在adapter中,每行都有一个对象:adapter。然后有一个名为Review的属性。

所以在name我这样做:

getView()

现在,如果用户从Review r = getItem(position); name = r.name; myTextView.setText(name); (通过TextView)更新Fragment,我该如何访问此属性(名称)并更新ContextMenu /对象相同的位置?

1 个答案:

答案 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对象,并通知适配器已发生的更改。这将依次刷新您的列表,并将使用刚刚提供的新值。