ListView中的Android-ImageView不';不显示

ListView中的Android-ImageView不';不显示,android,listview,interface,imageview,Android,Listview,Interface,Imageview,我无法理解为什么ImageView没有显示在ListView中 以下是XML代码: `<LinearLayout 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_par

我无法理解为什么ImageView没有显示在ListView中

以下是XML代码:

`<LinearLayout 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="wrap_content"
android:orientation="vertical">


<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/tvName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/default_service_name" />

    <ImageView
        android:id="@+id/ivLed"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="false"
        android:contentDescription="@string/ic_led"
        android:cropToPadding="false"
        android:visibility="visible"
        app:srcCompat="@mipmap/ic_led" />

    <ImageView
        android:id="@+id/ivLedDisp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/ic_led_display"
        android:visibility="visible"
        app:srcCompat="@mipmap/ic_leddisp" />

    <ImageView
        android:id="@+id/ivSpeaker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|right"
        android:contentDescription="@string/ic_speaker"
        android:foregroundGravity="top|right"
        android:visibility="visible"
        app:srcCompat="@mipmap/ic_speaker" />

    <ImageView
        android:id="@+id/ivServo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/ic_servo"
        android:visibility="visible"
        app:srcCompat="@mipmap/ic_servo" />

    <ImageView
        android:id="@+id/ivMotor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|right"
        android:contentDescription="@string/ic_motor"
        android:foregroundGravity="top|right"
        android:visibility="visible"
        app:srcCompat="@mipmap/ic_motor" />
</LinearLayout>

<TextView
    android:id="@+id/tvDesc"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:text="@string/default_service_desc" />
和ServiceAdapter.java

public class ServiceAdaptor extends BaseAdapter {

private Context mContext;
private List<Service> mServicesList;

//Constructors


public ServiceAdaptor(Context mContext, List<Service> mServicesList) {
    this.mContext = mContext;
    this.mServicesList = mServicesList;
}

@Override
public int getCount() {
    return mServicesList.size();
}

@Override
public Object getItem(int position) {
    return mServicesList.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = View.inflate(mContext, R.layout.services, null);
    TextView tvName = (TextView) v.findViewById(R.id.tvName);
    TextView tvDesc = (TextView) v.findViewById(R.id.tvDesc);
    ImageView ivLed = (ImageView) v.findViewById(R.id.ivLed);
    ImageView ivLedDisp = (ImageView) v.findViewById(R.id.ivLedDisp);
    ImageView ivServo = (ImageView) v.findViewById(R.id.ivServo);
    ImageView ivMotor = (ImageView) v.findViewById(R.id.ivMotor);
    ImageView ivSpeaker = (ImageView) v.findViewById(R.id.ivSpeaker);

    tvName.setText(mServicesList.get(position).getName());
    tvDesc.setText(mServicesList.get(position).getDesc());
    if (!mServicesList.get(position).isLed()) ivLed.setVisibility(View.INVISIBLE);
    if (!mServicesList.get(position).isLedDisplay()) ivLedDisp.setVisibility(View.INVISIBLE);
    if (!mServicesList.get(position).isServo()) ivServo.setVisibility(View.INVISIBLE);
    if (!mServicesList.get(position).isMotor()) ivMotor.setVisibility(View.INVISIBLE);
    if (!mServicesList.get(position).isSpeaker()) ivSpeaker.setVisibility(View.INVISIBLE);

    v.setTag(mServicesList.get(position).getId());

    return v;
}
}

为了检查布尔检查是否起作用,我更改了图像的可见性,以仅更改TextView的颜色,并且该检查起作用,因此图像存在问题,请尝试将其替换为以下内容:

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

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:text="Hello, world" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@mipmap/ic_launcher"
        android:layout_toEndOf="@id/editText"/>

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@mipmap/ic_launcher"
        android:layout_toEndOf="@id/imageView"/>

</RelativeLayout>


如果它不起作用,我会给你另一个建议。

我没有屏幕截图来帮助你调试,但最有可能的原因是你的textview和第一个图像将你的第二个图像推到了Linearlayout的边界之外。有一个提示可以帮助您调试:在android studio上打开工具>android>布局检查器。在那里,您可以看到视图的整个层次结构。尝试查找图像并检查它是否确实被推出框架图像显示在层次结构中,但我在预览窗口中根本看不到它们:(……我将TextView的可见性设置为“不可见”或“消失”,而图像仍然没有显示,因此我猜它们没有被挤出屏幕显示您的活动类,布局似乎正常。@tahsinRupam编辑了活动类的主要帖子好的,现在我看到您有一个列表视图(我在您的布局文件中没有看到它)。或者您的listview占据了整个屏幕,从而覆盖了其余视图,或者您的TextView和ImageView在listview中,这是一个错误。如果您想将文本和图像放在可以水平滚动的视图中,请将其移到滚动视图中。但是如果我将listview更改为scrollview,则我不知道如何操作要实例化该布局以从firebase数据库生成列表,我认为您有点混淆了概念。Listview是一种将数据适配到屏幕中的布局。您可以从某处获取数据,例如电话联系人列表,然后向其中添加适配器以定义每个元素在屏幕中的显示方式(文本视图等).在你的例子中,我所看到的只是静态定义的视图。这是一个完全不同的故事。我正在使用谷歌的实时数据库获取一个“人员”列表,每个人的姓名、描述和一些布尔值都可以随时更改。当数据库中的每个人都更改时,就会发生更改,但我无法继续,因为se我无法让iGes显示(即使它们是静态的)对。但问题是,每个项目的文本和图像视图都需要在设置为listview的适配器中生成。这就是适配器的全部用途:获取数据并决定如何显示数据。根据我在您问题中的理解,您是在将布局直接添加到活动中。如果这样做,它将无法工作。如果确认这就是您所做的,如果您需要适配器方面的帮助,请告诉我,我将更改我的答案以帮助您完成此操作(但是粘贴您的ServiceAdapter类)
public class ServiceAdaptor extends BaseAdapter {

private Context mContext;
private List<Service> mServicesList;

//Constructors


public ServiceAdaptor(Context mContext, List<Service> mServicesList) {
    this.mContext = mContext;
    this.mServicesList = mServicesList;
}

@Override
public int getCount() {
    return mServicesList.size();
}

@Override
public Object getItem(int position) {
    return mServicesList.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View v = View.inflate(mContext, R.layout.services, null);
    TextView tvName = (TextView) v.findViewById(R.id.tvName);
    TextView tvDesc = (TextView) v.findViewById(R.id.tvDesc);
    ImageView ivLed = (ImageView) v.findViewById(R.id.ivLed);
    ImageView ivLedDisp = (ImageView) v.findViewById(R.id.ivLedDisp);
    ImageView ivServo = (ImageView) v.findViewById(R.id.ivServo);
    ImageView ivMotor = (ImageView) v.findViewById(R.id.ivMotor);
    ImageView ivSpeaker = (ImageView) v.findViewById(R.id.ivSpeaker);

    tvName.setText(mServicesList.get(position).getName());
    tvDesc.setText(mServicesList.get(position).getDesc());
    if (!mServicesList.get(position).isLed()) ivLed.setVisibility(View.INVISIBLE);
    if (!mServicesList.get(position).isLedDisplay()) ivLedDisp.setVisibility(View.INVISIBLE);
    if (!mServicesList.get(position).isServo()) ivServo.setVisibility(View.INVISIBLE);
    if (!mServicesList.get(position).isMotor()) ivMotor.setVisibility(View.INVISIBLE);
    if (!mServicesList.get(position).isSpeaker()) ivSpeaker.setVisibility(View.INVISIBLE);

    v.setTag(mServicesList.get(position).getId());

    return v;
}
}
`{  "services" : [ null, { "desc" : "Playing the speaker",
                           "led" : false,
                           "ledDisp" : false,
                           "motor" : false,
                           "name" : "Sing",
                           "servo" : false,
                           "speaker" : true},

                         { "desc" : "1322",
                           "led" : true,
                           "ledDisp" : true,
                           "motor" : false,
                           "name" : "Mike",
                           "servo" : false,
                           "speaker" : false
                          } ]
}`
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:text="Hello, world" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@mipmap/ic_launcher"
        android:layout_toEndOf="@id/editText"/>

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@mipmap/ic_launcher"
        android:layout_toEndOf="@id/imageView"/>

</RelativeLayout>