Проблема с ExpandableListView на Android - PullRequest
0 голосов
/ 21 октября 2019

Оказывается, что при выполнении определенного запроса он дает мне данные для создания расширяемого списка, при первом открытии расширенного списка он показывает, как это должно быть.

Image_1

Пока все в порядке, но когда я двигаюсь вверх, весь ExpandableListView игнорируется, и он показывает меня иначе, чем в первый раз.

Image_2

Это код адаптера, соответствующий списку:

@Override
public View getChildView(int groupPosition, int childPosition,
                         boolean isLastChild, View convertView, ViewGroup parent) {


    ObjetosHistorico childText = (ObjetosHistorico) getChild(groupPosition, childPosition);

    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) this._context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.row_lista_historico, null);
    }


    CardView cardView = convertView.findViewById(R.id.cv_id_historico);


    ctiMetodos.setBackgroundCardView(_context.getApplicationContext(),cardView);

    //Aquí instanciamos los elementos de la cabecera.
    TextView txtListChild = convertView
            .findViewById(R.id.lblListItem);

    TextView txtListChild2 = convertView
            .findViewById(R.id.lblListItem2);

    TextView txtListChild3 = convertView
            .findViewById(R.id.lblListItem3);

    TextView txtListChild4 = convertView
            .findViewById(R.id.lblListItem4);

    TextView txtListChild5 = convertView
            .findViewById(R.id.lblListItem5);

    TextView txtListChild6 = convertView
            .findViewById(R.id.lblListItem6);

    TextView txtListChild7 = convertView
            .findViewById(R.id.lblListItem7);

    TextView txtListChild8 = convertView
            .findViewById(R.id.lblListItem8);

    TextView txtListFacturaDescrip = convertView
            .findViewById(R.id.lblListItemFactura);

    TextView txtListFechaDescrip = convertView
            .findViewById(R.id.lblListItem2Fecha);

    //Instanciamos el linear layout para poder ponerlo en visible o en invisible, según el caso
    LinearLayout llSkyBlue = convertView.findViewById(R.id.ll_sky_blue);

    //Aqui le asigno el valor que ha leido la consulta y he introducido en el objeto
    txtListChild.setText(childText.texto1);
    txtListChild2.setText(childText.texto3);
    txtListChild3.setText(childText.texto4);
    txtListChild4.setText(childText.texto5);
    txtListChild5.setText(childText.texto6);
    txtListChild6.setText(childText.texto7);
    txtListChild7.setText(childText.texto8);
    txtListChild8.setText(childText.texto9);

    //Le pongo la "cabecera" y color de fondo a la primera linea de la factura
    //Si el texto1 es igual, al número de documento anterior y la posición del hijo es mayor a la 1, pues entonces ocultamos la cabecera
    // ya que se trata del mismo número de documento.
    if(childText.texto1.equals(Variables.sFacturaAnteriorAdapter) && childPosition > 0)
    {

        txtListFacturaDescrip.setVisibility(View.GONE);
        txtListFechaDescrip.setVisibility(View.GONE);
        txtListChild.setVisibility(View.GONE);
        txtListChild2.setVisibility(View.GONE);
        llSkyBlue.setVisibility(View.GONE);
    }

    else
    {
        txtListFacturaDescrip.setVisibility(View.VISIBLE);
        txtListFechaDescrip.setVisibility(View.VISIBLE);
        txtListChild.setVisibility(View.VISIBLE);
        txtListChild2.setVisibility(View.VISIBLE);
        llSkyBlue.setVisibility(View.VISIBLE);
    }


    //La variable sFacturaAnteriorAdapter coge el valor del número del documento.
    Variables.sFacturaAnteriorAdapter = childText.texto1;

    //Devolvemos la vista.
    return convertView;
}

Я думаю, что проблема заключается в этой части кода адаптера. Спасибо

...