Как я могу запретить Listview повторять заголовки? - PullRequest
0 голосов
/ 27 мая 2020

Здравствуйте, я новичок в кодировании, я создаю приложение, и вам нужна небольшая помощь!

Моя первая строка в табличном представлении всегда повторяется, когда у меня есть данные чтобы показать.

Это результат моего приложения:

enter image description here

Я хочу, чтобы это было похоже на обычную таблицу, например:

enter image description here

Я покажу вам свой код:

Мое «основное действие»:

public class Administracao extends AppCompatActivity {


    private static final String[] MATRICULA = new String[]{
            "10-NX-68", "21-30-XJ", "54-HI-11", "90-29-VE"
    };

    private AutoCompleteTextView editText_Matric;

    //Referencias base de dados
    DatabaseReference reff2;

    private FirebaseDatabase database;

    Spinner spinner;

     String selected_item;



     //Testes Firebase listview apagar se der erro


    List<Dados_Administracao> administracao_adapter;
    ListView listViewCondutores;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_administracao);

        editText_Matric = findViewById(R.id.actv);
        Button btn = findViewById(R.id.btn_seguinte);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, MATRICULA);
        editText_Matric.setAdapter(adapter);

        //TESTES FIREBASE list view
        listViewCondutores = (ListView) findViewById(R.id.listView1);

        administracao_adapter = new ArrayList<>();


        editText_Matric.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                //Mostrar todos os registos

                reff2 = database.getInstance().getReference().child("Registo Inicial e Final");

                reff2.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange( DataSnapshot dataSnapshot) {

                        administracao_adapter.clear();


                        for (DataSnapshot ds : dataSnapshot.getChildren()) {

                             Dados_Administracao dt = ds.getValue(Dados_Administracao.class);


                            if(ds.child("matricula").getValue().equals(editText_Matric.getText().toString())) {

                                administracao_adapter.add(dt);

                            }


                          }

                        Administracao_adapter adapter2 = new Administracao_adapter(Administracao.this, administracao_adapter);

                        listViewCondutores.setAdapter(adapter2);

                      //  adapter2.notifyDataSetChanged();



                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                        // Handle possible errors.
                        Log.e("The read failed: " ,databaseError.getMessage());
                    }
                });

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void afterTextChanged(Editable s) {

            }


        });

    }

Действие, в котором я храню данные:

 public class Dados_Administracao {

       private String observacoes,matricula,datainicio,horainicio,datafim,horafim,nomecondutor,marca,codprojeto,latfinal,longfinal,obsfinal,latitude,longitude,kminicial,kmfinal;


        public Dados_Administracao(){

        }

        public Dados_Administracao(String observacoes, String matricula, String datainicio, String horainicio, String datafim, String horafim, String nomecondutor, String marca, String codprojeto, String latfinal, String longfinal, String obsfinal, String latitude, String longitude, String kminicial, String kmfinal) {
            this.observacoes = observacoes;
            this.matricula = matricula;
            this.datainicio = datainicio;
            this.horainicio = horainicio;
            this.datafim = datafim;
            this.horafim = horafim;
            this.nomecondutor = nomecondutor;
            this.marca = marca;
            this.codprojeto = codprojeto;
            this.latfinal = latfinal;
            this.longfinal = longfinal;
            this.obsfinal = obsfinal;
            this.latitude = latitude;
            this.longitude = longitude;
            this.kminicial = kminicial;
            this.kmfinal = kmfinal;
        }

        public String getObservacoes() {
            return observacoes;
        }

        public String getMatricula() {
            return matricula;
        }

        public String getDatainicio() {
            return datainicio;
        }

        public String getHorainicio() {
            return horainicio;
        }

        public String getDatafim() {
            return datafim;
        }

        public String getHorafim() {
            return horafim;
        }

        public String getNomecondutor() {
            return nomecondutor;
        }

        public String getMarca() {
            return marca;
        }

        public String getCodprojeto() {
            return codprojeto;
        }

        public String getLatfinal() {
            return latfinal;
        }

        public String getLongfinal() {
            return longfinal;
        }

        public String getObsfinal() {
            return obsfinal;
        }

        public String getLatitude() {
            return latitude;
        }

        public String getLongitude() {
            return longitude;
        }

        public String getKminicial() {
            return kminicial;
        }

        public String getKmfinal() {
            return kmfinal;
        }
    }

1 Ответ

1 голос
/ 27 мая 2020

Если вы настроили использование ListView, тогда он напрямую поддерживает добавление заголовков в ваш список, посмотрите addHeaderView (View v) . Итак, что вы бы сделали в этом случае, так это отделите часть заголовка от макета строки в новый файл макета, надуйте его и вызовите listViewCondutores.addHeaderView(inflatedView).

Однако RecyclerView ( документация ) может лучше соответствовать вашим потребностям и обычно рекомендуется вместо ListView. Тогда, несмотря на то, что он напрямую не поддерживает представления заголовков, он поддерживает несколько типов представлений!

Дайте мне знать, если у вас есть какие-либо вопросы!

...