gpt4 book ai didi

android - 单击组时如何将 ExpandableListView 滚动到正确位置

转载 作者:行者123 更新时间:2023-11-29 18:05:17 27 4
gpt4 key购买 nike

我的 Activity 中有一个 ExpandableListView 可以正常工作。我在我的适配器中设置了一个关于 RelativeLayout 的 clickListener,所以当我点击它时,我的组得到扩展。我的组列表是一个 ArrayList,我的 child 是一个 HashMap>,其中 Integer 是 ArrayList 的 groupPosition。 Children 是任何用户都可以看到的评论列表。用户可以在评论列表末尾通过 EditText 添加评论。我的目标是将点击的 groupView 定位在屏幕顶部。我试图这样做,但我的问题是:

我的第一组有 10 条评论。如果我展开第一个组,我可以看到它们并且我点击的组的位置是正确的。如果我尝试展开我的第四组,当第一组已经展开时,我屏幕上的 ExpandableListView 位置会转到第一组的第四个 child ,而不是刚刚展开的第四组。如果我向下滚动列表,第四组是打开的,但我会定位在第四组而不是第一组的第四个 child 。如果我只打开没有评论的组,一切正常......

方法getGroupView的一小部分:

 scanCommFav=(RelativeLayout)v.findViewById(R.id.feedcell_scancommentfavorite);



scanCommFav.setOnClickListener(new OnClickListener(){

@Override
public void onClick(View v)
{
if(!isExp)
{
if(mess==0)
{
setIdx(idx);
addIndex(idx);
getCommentNoList();

}
else
{
callCommentScript(snapId);

setIdx(idx);
addIndex(idx);
}

}
else if(isExp)
{
setIdx(idx);
removeIndex(idx);
closeGroup(idx);


}
}
});

addIndex(idx) 和removeIndex,在LinkedList 中添加和删除groups open 的位置。 setIdx(idx) 将我用于不同目的的组位置设置为 int 变量。

这是 openGroup():

private void openGroup(int pos)
{
feedlistView.setSelectedGroup(pos);
}

这是 closeGroup():

private void closeGroup(int idx)
{
feedlistView.collapseGroup(idx);
}

这是我的听众:

    feedlistView.setOnItemSelectedListener(new OnItemSelectedListener(){

@Override
public void onItemSelected(AdapterView<?> arg0, View view,int position, long id) {
if(ExpandableListView.getPackedPositionForGroup(position)==ExpandableListView.PACKED_POSITION_TYPE_GROUP)
{
int pos = feedlistView.getSelectedItemPosition();
feedlistView.expandGroup(pos);
}

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub

}

});

我也尝试过实现 setOnGroupClickListener 但没有用。有人有什么想法吗?谢谢

最佳答案

每次我以这种方式将我的客户适配器设置到我的可扩展 ListView 时,我都解决了保存实例状态和恢复实例状态的问题:

Parcelable state = myExpList.onSaveIstanceState();
myExpList.setAdapter(myAdapter);
myExpList.onRestoreIstanceState();

在我的方法 openGroup(int position) 之后

myExpList.expandGroup(position);
myExpList.setSelectedGroup(position);

我没有使用 setOnItemSelectedListener。

关于android - 单击组时如何将 ExpandableListView 滚动到正确位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13712906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com