0

我有以下侦听器,我重写了方法onGroupExpand

list.setOnGroupExpandListener(new OnGroupExpandListener() { 

            @Override 
            public void onGroupExpand(int groupPosition) { 
                long groupId = adapter.getGroupId(groupPosition);
                Toast.makeText(getBaseContext(), "Group =  " + adapter.getGroupId(groupPosition), Toast.LENGTH_SHORT).show();
                Log.d(TAG, "Group expanded");
                View v = adapter.getGroupView((int) groupId, true, null, list);

                TextView txt = (TextView)v.findViewById(R.id.expandable_first_layer);
                Log.d(TAG, "txt: " + txt.getText());
                txt.setText("Tru-ru-ru");
                Log.d(TAG, "txt: " + txt.getText());
            } 
        }); 

txt.getText()第一次调用时看到了正确的文本。然后 txt.getText()在我的 LogCat 中的第二个之后,我看到了新文本。

但关键是它ExpandableListView不会改变它在那个特定项目中的文本。与在 onGroupExpand 中设置背景颜色相同。有人遇到过这个bug吗?

4

2 回答 2

0

在 getGroupView 方法的适配器类中尝试此操作检查列表的状态,即是否在 if 条件下展开或折叠,如果展开,您可以设置不同的颜色。查看下面的代码片段以获取更多信息

public View getGroupView(final int groupPosition, final boolean isExpanded, 
            View convertView, ViewGroup parentView)
    {

            convertView.setBackgroundResource(R.color.red);
            if(isExpanded){

            convertView.setBackgroundResource(R.color.blue);

            }





        return convertView;
    }
于 2012-07-12T11:10:46.327 回答
0

那么你需要通过膨胀正确的布局来获得convertview,否则它会给出异常

于 2012-07-16T09:06:17.827 回答