gpt4 book ai didi

android - 自定义 View 未使用 ExpandableListView 上的 OnGroupClickListener 进行更新

转载 作者:搜寻专家 更新时间:2023-11-01 07:39:54 24 4
gpt4 key购买 nike

我有自定义 groupView,需要在展开和折叠时更改状态。如果展开同一个组 View ,它会在两种状态之间切换。

我遇到的问题是 expand 方法似乎正在提取 View 的某些缓存版本,因为调用 expandGroup 后我的更新不可见。

如果我的监听器返回 true(自己处理整个事件)而没有调用 expandGroup,则更新会发生。所以 expandGroup 发生了一些事情,它只允许绘制缓存的 View 。我已经尝试了 invalidating() 几乎所有的东西。我试过在 ListView 上触发数据更新事件。我也尝试了所有这些其他的东西:

expandableList.setGroupIndicator(null);
expandableList.setAlwaysDrawnWithCacheEnabled(false);
expandableList.setWillNotCacheDrawing(true);
expandableList.setItemsCanFocus(false);

没有任何运气 :(

这是我的 onClick 代码:

expandableList.setOnGroupClickListener(new OnGroupClickListener() {

public boolean onGroupClick(ExpandableListView parent, View v,
int groupPosition, long id) {
MusicTrackRow mt = (MusicTrackRow) v;

if (mt.isPlaying == true) {
mt.setPaused();
} else {
mt.setPlaying();
}
mt.invalidate();
parent.invalidate();
trackAdapter.notifyDataSetInvalidated();
//need to call expandGroup if the listener returns true.. if returning false expandGroup is //returned automatically
expandableList.expandGroup(groupPosition); //no view refresh
return true;

最佳答案

终于找到解决办法了!

展开可扩展列表时,将为列表中的每个组调用适配器中的 getGroupview。那就是你想要改变的地方。isExpanded 参数可让您确定展开哪个组 View 。

然后你可以做类似这样的事情:

public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
View v;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
v = inflater.inflate(R.layout.expandablelistitem, null);

} else {
v = convertView;
}
int id = (!isExpanded) ? R.drawable.list_plus_selector
: R.drawable.list_minus_selector;

TextView textView = (TextView) v.findViewById(R.id.list_item_text);
textView.setText(getGroup(groupPosition).toString());

ImageView icon = (ImageView) v.findViewById(R.id.list_item_icon);

icon.setImageResource(id);
return v;

}

关于android - 自定义 View 未使用 ExpandableListView 上的 OnGroupClickListener 进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372867/

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