ListView中的Android-ImageView不';不显示
我无法理解为什么ImageView没有显示在ListView中 以下是XML代码: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
`<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>