ListView с дополнительными полями и пользовательскими данными из базы данных Firebase - PullRequest
0 голосов
/ 27 июня 2019

Я хочу, чтобы у списка было 4 информации, но я мог сделать это только с 2 полями.Там я увидел видео, которое парень настроил в виде списка.Я воспроизвел это, и я действительно должен был оставить все так, как я хотел.Единственная проблема сейчас заключается в том, что я не могу поместить в нее данные.Я не знаю, в чем заключается ошибка, и я не нахожу никакого объяснения даже в документации.

У кого-нибудь есть идеи?

Моя база данных:

Database

Это данные, которые я хочу отобразить, и ниже тех, которые мне возвращаются.

Return

 vagas = new Vagas();
        list = new ArrayList<Vagas>();
        adapter = new ArrayAdapter<Vagas>(getActivity(), layout.list_view, id.funcao, list);

        db = FirebaseDatabase.getInstance();
        ref = db.getReference("vagas");

        listView = getView().findViewById(id.listViewId);

        ref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for(DataSnapshot ds : dataSnapshot.getChildren()){
                    vagas = ds.getValue(Vagas.class);
                    list.add(vagas);
                }
                listView.setAdapter(adapter);
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        });

list_view.xml ниже:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="2dp"
    android:paddingBottom="2dp"
    android:paddingStart="12dp"
    android:paddingEnd="12dp"enter code here
    android:orientation="vertical"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <TextView
            android:id="@+id/funcao"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20sp"
            android:text="Developer"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/descricao"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="2dp"
            android:text="A software engineer is a person who applies the principles of software engineering to the design, development, maintenance, testing, and evaluation of this. So that only."/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="2dp"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Salário: "
            android:textSize="16sp"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/salario"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1248,00 R$"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Localização: "
            android:textSize="16sp"
            android:textStyle="bold"
            />
        <TextView
            android:id="@+id/local"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Campinas-SP"
            />
    </LinearLayout>
</LinearLayout>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray"/>
</LinearLayout>

1 Ответ

1 голос
/ 27 июня 2019

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

public class VegasAdapter extends ArrayAdapter<Vagas> {
    public VegasAdapter(Context context, ArrayList<Vagas> users) {
       super(context, 0, users);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
       // Get the data item for this position
       Vagas vagas = getItem(position);    
       // Check if an existing view is being reused, otherwise inflate the view
       if (convertView == null) {
          convertView = LayoutInflater.from(getContext()).inflate(R.layout.list_, parent, false);
       }
       // Lookup view for data population
       TextView tv1 = (TextView) convertView.findViewById(R.id.funcao);
       TextView tv1 = (TextView) convertView.findViewById(R.id.descricao);

// get data and binding with textview
// Below lines are just sample based on you class if you need full code post your Vagas.java code
       tvName.setText(vagas.getFincao());
       tvHome.setText(vagas.getDescripcao());


       // Return the completed view to render on screen
       return convertView;
   }
}


Затем настройте пользовательский адаптер таким образом и получите данные из базы данных.

   List<Vagas>   list = new ArrayList<Vagas>();
   VegasAdapter     adapter = new VegasAdapter<Vagas>(getActivity(),list); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...