首页 > 解决方案 > 如何停止 Listview 重复标题?

问题描述

你好,我是编码新手,我正在创建一个应用程序,需要你们的帮助!

当我有数据要显示时,我的表格视图的第一行总是重复。

这是我的应用程序的输出:

在此处输入图像描述

我希望它像这样的普通表:

在此处输入图像描述

我将向您展示我的代码:

我的“主要活动”:

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;
        }
    }

标签: androidandroid-studiolistview

解决方案


如果您设置使用 aListView那么它直接支持将标题添加到您的列表中,请查看 addHeaderView(View v)

所以在这种情况下你要做的是将标题部分从你的行布局中分离到一个新的布局文件中,膨胀它并调用listViewCondutores.addHeaderView(inflatedView).

但是, aRecyclerView 可能更适合您的需求,通常建议在ListView. 然后即使这不直接支持标题视图,它也支持多种视图类型!


推荐阅读