Firebase Children Count для просмотра списка - PullRequest
0 голосов
/ 24 сентября 2018

Добрый день,

Я пытаюсь подсчитать количество детей на основе голосов.

Это моя структура Firebase.

Таблица кандидатов

и

Таблица голосов

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

Это мой 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">

    <TextView
        android:id="@+id/count_ssc_president_last_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textSize="40sp"
        android:textColor="@color/colorBlack"/>

    <TextView
        android:id="@+id/count_ssc_president_first_middle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textSize="20sp"/>

    <TextView
        android:id="@+id/count_ssc_president_partylist"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <TextView
        android:id="@+id/count_ssc_president_count"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="TextView"
        android:textSize="20sp"
        android:textColor="@color/colorBlack"/>
</LinearLayout>

Это мой xml для класса Main java

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Voter_SSC_President">

    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="14dp"
        android:text="@string/choose_ssc_president"
        android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.502"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/imageView2" />

    <ListView
        android:id="@+id/listCountSSCPresident"
        android:layout_width="309dp"
        android:layout_height="338dp"
        android:layout_marginBottom="32dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="34dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView4" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="277dp"
        android:layout_height="111dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toTopOf="@+id/textView4"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ic_ssc_logo" />
</android.support.constraint.ConstraintLayout>

Это мойадаптер

 private Activity context;
    private List<SSC_Presidents> CountSSC_PresidentsList;

    DatabaseReference userReference;
    long num;

    private LayoutInflater inflater;

    public CountSSCPresLists(Activity context, List<SSC_Presidents> CountSSC_PresidentsList )
    {
        super(context, R.layout.listview_count_ssc_president, CountSSC_PresidentsList);
        this.context = context;
        this.CountSSC_PresidentsList = CountSSC_PresidentsList;
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        inflater = context.getLayoutInflater();

        View listViewItem = inflater.inflate(R.layout.listview_count_ssc_president, null, false);

        TextView textViewLast_name = (TextView) listViewItem.findViewById(R.id.count_ssc_president_last_name);
        TextView textViewFirst_middle_name = (TextView) listViewItem.findViewById(R.id.count_ssc_president_first_middle);
        TextView textViewPartylist = (TextView) listViewItem.findViewById(R.id.count_ssc_president_partylist);
        TextView textViewCount = (TextView) listViewItem.findViewById(R.id.count_ssc_president_count);

        SSC_Presidents sscPresidents = CountSSC_PresidentsList.get(position);

        /*
        userReference = FirebaseDatabase.getInstance().getReference("vote");
        userReference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                num = dataSnapshot.getChildrenCount();
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

        textViewCount.setText((int) num);*/


        textViewLast_name.setText(sscPresidents.getLast_name());
        textViewFirst_middle_name.setText(sscPresidents.getFirst_name()+", "+sscPresidents.getMiddle_name());
        textViewPartylist.setText(sscPresidents.getPartylist_id());
        return listViewItem;

Блок-комментарий - это моя попытка сгенерировать число голосов на основе идентификатора кандидата

Это мой основной класс Java

String stud_no;

DatabaseReference databaseReferenceCountSSCPres;

ListView listViewCountSSCPresident;

List<SSC_Presidents> sscCountPresList;


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

    databaseReferenceCountSSCPres = FirebaseDatabase.getInstance().getReference("candidate");

    stud_no = LoginScreen.TBPstud_no1();

    listViewCountSSCPresident = findViewById(R.id.listCountSSCPresident);

    sscCountPresList = new ArrayList<>();

}

@Override
protected void onStart() {
    super.onStart();

    Query CountSSCPresident = databaseReferenceCountSSCPres.orderByChild("council_id_position_id_school_year").equalTo("SSC_PRES_201819");
    CountSSCPresident.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            sscCountPresList.clear();

            for (DataSnapshot CountSSCPresSnapshot : dataSnapshot.getChildren())
            {
                SSC_Presidents CountSSCPres = CountSSCPresSnapshot.getValue(SSC_Presidents.class);
                sscCountPresList.add(CountSSCPres);
            }

            CountSSCPresLists adapter = new CountSSCPresLists(Admin_Count_SSC_President.this, sscCountPresList);
            listViewCountSSCPresident.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });




}

Этоэто результат

Результат

Я хочу поместить счет в TextView в Результат.

Спасибо.

PS.Когда я удаляю комментарий блока на адаптере, экран с результатом вылетает.

РЕДАКТИРОВАТЬ:

Предложение сработало, но только для последнего кандидата.Я также использовал запрос сейчас.

userReference = FirebaseDatabase.getInstance().getReference("vote");
Query CountSSCPresident = userReference.orderByChild("candidate_id").equalTo(sscPresidents.getCandidate_id());
CountSSCPresident.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        num = dataSnapshot.getChildrenCount();
        textViewCount.setText(String.valueOf((int)num));
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

Результат

1 Ответ

0 голосов
/ 24 сентября 2018

textViewCount.setText((int) num);

Вам необходимо привести num к строке.Попробуйте это:

textViewCount.setText(String.valueOf((int)num));

РЕДАКТИРОВАТЬ: Также поместите его внутри слушателя:

userReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            num = dataSnapshot.getChildrenCount();
            textViewCount.setText(String.valueOf((int)num));
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...