onCheckedChanged изменения LinearLayout setVisibility меняет порядок элементов ListView - PullRequest
1 голос
/ 01 марта 2012

У меня есть Activity с ListView элементов CheckBox и TextView.Когда я впервые проверяю или снимаю галочку в последний раз, я хочу LinearLayout с некоторыми кнопками, чтобы показать / скрыть.Это работает хорошо.Проблема в том, что всякий раз, когда это происходит, порядок элементов ListView меняется на противоположный.Это происходит только тогда, когда у меня не установлен флажок, и если установлен последний флажок, или когда последний выбран, снимите флажок.

Код getView моего адаптера следующий:

    @Override
public View getView(int position, View view, ViewGroup parent)
{
    LinearLayout v = (LinearLayout)view;
    ViewHolder holder;        

    if (v == null)
    {
        LayoutInflater inflater = (LayoutInflater)container.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = (LinearLayout)inflater.inflate(R.layout.serverlist_view, null);

        holder = new ViewHolder();

        holder.checkbox = (CheckBox)v.findViewById(R.id.serverlist_checkbox);

        holder.textview = (TextView) v.findViewById(R.id.serverlist_name);

        holder.checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener()
        {

            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
            {
                LinearLayout layout = (LinearLayout)container.findViewById(R.id.buttons_linearlayout);
                int visibility = View.VISIBLE;

                if (isChecked)
                {
                    nChecked++;
                }
                else
                {
                    nChecked--;

                    if (nChecked == 0)
                    {
                        visibility = View.GONE;
                    }
                }

                layout.setVisibility(visibility);

            }
        });

        v.setTag(holder);
    }
    else
    {
        holder = (ViewHolder)v.getTag();
    }

    holder.textview.setText(hostname);

    return v;

}

Если я комментируюout layout.setVisibility (visibility) проблема исчезает.Я уже проверял этот пост Список ListView переворачивается, когда выбор сделан , но я не могу заставить свой код работать.

Есть идеи?

Спасибо

...