Расширяемый ListView onGroupExpanded и onGroupCollapsed - PullRequest
2 голосов
/ 11 июля 2011

ребята, у меня есть 3 группы для моего расширяемого списка, я пытаюсь изменить цвет каждой группы соответственно, когда они расширяются, и вернуться к нормальному цвету, когда они разрушаются ...

проблемаЯ сталкивался с тем, что когда я щелкаю первую группу, она меняет цвет последней группы ..., поэтому я могу сказать, что их цвета менялись случайным образом, а не в соответствующей группе.

здесьпростой код, который я использую:

listView.setOnGroupClickListener(new OnGroupClickListener()
    {

        @Override
        public boolean onGroupClick(ExpandableListView parent, View v, int position, long id)
        {
            v.setBackgroundResource(R.drawable.group_bar_press);

            Toast.makeText(getBaseContext(), "Group clicked", Toast.LENGTH_LONG).show();
            return false;
        }
    });

ну, это все, что я надеюсь, это будет решено:)

Ответы [ 3 ]

8 голосов
/ 14 июля 2011

Я такой неряшливый: p

просто использовал Boolean isExpanded в моем методе getView, где я использую, чтобы вернуть мое представление,

и сделать это так:

if(isExpanded){
   convertView.setBackgroundResource(R.drawable.press);
}else{
   convertView.setBackgroundResource(R.drawable.normal);
}

LOL

1 голос
/ 19 июня 2014

Необходимо изменить метод getGroupView в адаптере ExpandableList с помощью:

    if (isExpanded) {
       convertView.setBackgroundColor(0xFF0db6a3);
    } else {
        convertView.setBackgroundColor(0xFFFFFFFF);
    }

    return convertView;

И все вместе результат таков:

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

    String headerTitle = (String) getGroup(groupPosition);
    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) this._context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.list_group, null);
    }

    TextView lblListHeader = (TextView) convertView
            .findViewById(R.id.lblListHeader);
    lblListHeader.setTypeface(null, Typeface.BOLD);
    lblListHeader.setText(headerTitle);

    if (isExpanded) {
       convertView.setBackgroundColor(0xFF0db6a3);
    } else {
        convertView.setBackgroundColor(0xFFFFFFFF);
    }

    return convertView;
}
0 голосов
/ 11 июля 2011

Я столкнулся с той же проблемой, поэтому сделал следующее: вместо изменения цвета одной группы измените цвет всех 3 одновременно, независимо от того, какой цвет вы хотите.

Возможно, это не хорошее решение, но у меня получилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...