1

我有ListView一个ContextMenu内置的。菜单允许用户重命名一个项目属性TextView

但是,在向下滚动并返回时,旧名称再次出现。

我明白为什么:adapter没有更新。

例如:在adapterI have a object for each row: Review中。然后有一个属性叫做name

所以在getView()我做:

Review r = getItem(position);
name = r.name;
myTextView.setText(name);

现在,如果用户TextViewFragment(通过ContextMenu)更新它,我如何访问这个属性(名称)并将adapter/object 更新到相同的位置?

4

1 回答 1

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并通知适配器已发生的更改。这将反过来刷新您的列表,并将使用刚刚提供的新值。

于 2013-06-11T22:33:55.567 回答