【问题标题】:Android/Firebase - TextView not showing in ListViewAndroid/Firebase - TextView 未显示在 ListView 中
【发布时间】:2020-06-14 03:03:55
【问题描述】:

我是 Android 的初学者。在适配器的帮助下,我在将卡片中的文本视图添加到列表视图时遇到了问题。我正在关注 youtube 上的教程,但它对我不起作用。此外,我查找了其他类似的问题,但由于我是初学者,我无法理解解决方案。如果有人帮助我解决这个问题,我将不胜感激。

这是我的带有文本视图布局的卡片,名为 job_row

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView 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:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   app:cardCornerRadius="3dp"
   android:elevation="90dp"
   android:layout_margin="15dp">

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="112dp"
    android:background="#fff"
    android:orientation="vertical">


    <ImageView
        android:id="@+id/prof_pic"
        android:layout_width="80dp"
        android:layout_height="80dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:scaleType="centerCrop"
        android:src="@drawable/prof_pic"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/profName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="16dp"
        android:fontFamily="sans-serif"
        android:text="Poster Name"
        android:textColor="#000"
        android:textSize="16sp"
        android:textStyle="normal"
        app:layout_constraintStart_toEndOf="@+id/prof_pic"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/jobName"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="8dp"
        android:fontFamily="sans-serif-black"
        android:text="Job Name"
        android:textColor="#000"
        android:textSize="16sp"
        app:layout_constraintStart_toEndOf="@+id/prof_pic"
        app:layout_constraintTop_toBottomOf="@+id/profName" />

    <TextView
        android:id="@+id/jobLocation"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="24dp"
        android:layout_marginTop="8dp"
        android:fontFamily="sans-serif-light"
        android:text="Job Location"
        android:textColor="#000"
        android:textSize="14sp"
        app:layout_constraintStart_toEndOf="@+id/prof_pic"
        app:layout_constraintTop_toBottomOf="@+id/jobName" />

    <TextView
        android:id="@+id/jobCharge"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:fontFamily="sans-serif-light"
        android:text="Job Charge"
        android:textColor="#000"
        android:textSize="14sp"
        app:layout_constraintBaseline_toBaselineOf="@+id/jobLocation"
        app:layout_constraintStart_toEndOf="@+id/jobLocation" />

</androidx.constraintlayout.widget.ConstraintLayout>

我希望卡片视图出现的主页布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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=".Home"
>

<SearchView
    android:id="@+id/search"
    android:layout_width="0dp"
    android:layout_height="40dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="24dp"
    android:layout_marginEnd="80dp"
    android:background="#fff"
    android:iconifiedByDefault="false"
    android:queryBackground="@android:color/transparent"
    android:queryHint="Search Jobs"
    android:textColor="#fff"
    android:textSize="10dp"
    android:visibility="visible"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@+id/newBtn"
    style="@style/TextButton"
    android:layout_width="30dp"
    android:layout_height="27dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="24dp"
    android:text="New"
    android:textAlignment="viewStart"
    android:textSize="14sp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/search" />

<Button
    android:id="@+id/nearYouBtn"
    style="@style/TextButton"
    android:layout_width="70dp"
    android:layout_height="30dp"
    android:layout_marginStart="70dp"
    android:layout_marginTop="24dp"
    android:text="Near You"
    android:textAlignment="viewStart"
    android:textSize="14sp"
    app:layout_constraintStart_toEndOf="@+id/newBtn"
    app:layout_constraintTop_toBottomOf="@+id/search" />

<Button
    android:id="@+id/recommendBtn"
    style="@style/TextButton"
    android:layout_width="96dp"
    android:layout_height="25dp"
    android:layout_marginStart="70dp"
    android:layout_marginTop="24dp"
    android:layout_marginEnd="16dp"
    android:text="Recommended"
    android:textAlignment="viewStart"
    android:textSize="14sp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toEndOf="@+id/nearYouBtn"
    app:layout_constraintTop_toBottomOf="@+id/search" />

<ListView
    android:id="@+id/newjob_list"
    android:layout_width="329dp"
    android:layout_height="446dp"
    android:layout_marginStart="16dp"
    android:layout_marginTop="32dp"
    android:layout_marginEnd="16dp"
    android:visibility="visible"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/nearYouBtn" />

家庭课堂

  package com.example.oddsynew;

import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

import com.firebase.ui.database.FirebaseListAdapter;
import com.firebase.ui.database.FirebaseListOptions;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class Home extends AppCompatActivity {

    ListView lv;
    FirebaseListAdapter adapter;
    DatabaseReference myRef;

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

        lv = (ListView) findViewById(R.id.newjob_list);
        myRef = FirebaseDatabase.getInstance().getReference().child("Job");
        FirebaseListOptions<Job> options = new FirebaseListOptions.Builder<Job>()
                .setLayout(R.layout.job_row)
                .setQuery(myRef, Job.class)
                .build();

        adapter = new FirebaseListAdapter(options) {
            @Override
            protected void populateView(View v, Object model, int position) {
                TextView recruiterName = v.findViewById(R.id.profName);
                TextView jobName = v.findViewById(R.id.jobName);
                TextView jobLocation = v.findViewById(R.id.jobLocation);
                TextView jobCharge = v.findViewById(R.id.jobCharge);

                Job job = (Job) model;
                recruiterName.setText(job.getPoster_name());
                jobName.setText(job.getJob_name());
                jobLocation.setText(job.getLocation());
                jobCharge.setText(job.getJob_charge().toString());
            }
        };
        lv.setAdapter(adapter);
    }

    @Override
    protected void onStart() {
        super.onStart();
        adapter.startListening();
    }

    @Override
    protected void onStop() {
        super.onStop();
        adapter.stopListening();
    }
    }

还有我的适配器类

 package com.example.oddsynew;

public class Job {
    private String job_name;
    private String poster_name;
    private String location;
    private Double job_charge;

    public String getJob_name() {
        return job_name;
    }

    public Job(String job_name, String poster_name, String location, Double job_charge) {
        this.job_name = job_name;
        this.poster_name = poster_name;
        this.location = location;
        this.job_charge = job_charge;
    }

    public void setJob_name(String job_name) {
        this.job_name = job_name;
    }

    public String getPoster_name() {
        return poster_name;
    }

    public void setPoster_name(String poster_name) {
        this.poster_name = poster_name;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public Double getJob_charge() {
        return job_charge;
    }

    public void setJob_charge(Double job_charge) {
        this.job_charge = job_charge;
    }
    }

【问题讨论】:

  • 您的意思是说来自 firebase 的文本没有显示或者实际的文本视图没有显示在卡片视图中?考虑使用 recyclerview 而不是 listview。
  • @SABANTO 文本视图。我也试过回收站。面临同样的问题。
  • 那么共享代码有什么问题呢?你有错误吗?
  • @AlexMamo 我没有任何错误,但列表视图没有显示在布局中。

标签: android firebase android-studio listview


【解决方案1】:

您的 TextView 没有显示,因为您给了它们0dp 宽度,但您没有给出完整的约束。

ConstraintLayout 中,给孩子android:layout_width="0dp" 意味着您要使用约束来确定宽度,而不是显式指定宽度。但如果这样做,则必须为 both 面指定约束:app:layout_constraintStart_*app:layout_constraintEnd_*。如果您不同时指定两者,您的视图将保持零宽度,使其不可见。

要解决此问题,请将以下属性添加到所有具有android:layout_width="0dp"TextViews

<TextView
    ...
    android:layout_marginEnd="16dp"
    app:layout_constraintEnd_toEndOf="parent"
    ... />

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多