当ListView完成显示项目时,我需要做一些事情。
现在,我先调用NotifyDataSetChanged,然后使用list.FirstVisiblePosition,但问题是在调用时没有任何项目可见。

那么,当项目在屏幕上可见时,如何触发我的代码?

原因是我只需要为可见项做一些工作。

谢谢,尼克拉斯

最佳答案

您在ListView中使用哪种集合类型?如果您使用的是“普通”集合类型(例如System.Collections.Generic.List<T>),则在构造ListView之后,ListView将看不到添加到集合中的任何项目。您将需要使用JavaList<T>代替。

请参见Collections binding overview末尾的示例:

// This fails:
var badSource  = new List<int> { 1, 2, 3 };
var badAdapter = new ArrayAdapter<int>(context, textViewResourceId, badSource);
badAdapter.Add (4);
if (badSource.Count != 4) // true
    throw new InvalidOperationException ("this is thrown");

// this works:
var goodSource  = new JavaList<int> { 1, 2, 3 };
var goodAdapter = new ArrayAdapter<int> (context, textViewResourceId, goodSource);
goodAdapter.Add (4);
if (goodSource.Count != 4) // false
    throw new InvalidOperaitonException ("should not be reached.");

关于android - Android ListView在显示/初始化事件上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7399205/

10-12 00:29
查看更多