继续上篇的定位问题,由于时间原因,上篇的定位不是很准确,下面将准确定位的JS代码共享出来:
调用定位处的代码如下:
var idx = getIndexFromLab(modelData);
list_view.positionViewAtIndex(idx, ListView.Beginning);
然后将Repeater的model补全如下:
model: ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
function getIndexFromLab(lab)
{
var arr = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
var j;
for (j=0; j<arr.length; j++)
{
if (arr[j] === lab)
break;
}
var i;
for (i=0;i<list_model.count;i++)
{
if (list_model.get(i).sectionChar.substr(0, 1) === lab)
{
return i;
}
}
if (i >= list_model.count)
{
return getIndexFromLab(arr[j-1]);
}
}
以上JS代码,需要注意其递归调用处:return getIndexFromLab(arr[j-1]); 切记递归return,不熟悉递归的,这里可能会犯错。
调用定位处的代码如下:
var idx = getIndexFromLab(modelData);
list_view.positionViewAtIndex(idx, ListView.Beginning);
然后将Repeater的model补全如下:
model: ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
这样,就能够根据鼠标选中分组准确定位ListView了。