首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListView中的Android - ImageView未显示

ListView中的Android - ImageView未显示
EN

Stack Overflow用户
提问于 2017-03-12 04:42:03
回答 1查看 747关注 0票数 0

我搞不懂为什么ListView中没有显示ImageView

Left side is the result, Right side is in the editor

下面是XML代码:

代码语言:javascript
复制
`<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" />

`

不管我用什么图片,从什么来源...没有显示..。我试图通过代码使它不可见和可见,但仍然不起作用:(

很抱歉问了这个愚蠢的问题,但这是我第一次做android应用程序

EDIT1:活动类` `public class ServiceList扩展AppCompatActivity {

代码语言:javascript
复制
private ListView lvServices;
private ServiceAdaptor adaptor;
private List<Service> mServicesList;

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

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference rootRef = database.getReference();
    DatabaseReference servicesRef = rootRef.child("services");


    lvServices = (ListView)findViewById(R.id.mListView_services);
    mServicesList = new ArrayList<>();



    servicesRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (mServicesList.size() > 0)
                mServicesList.clear();
            for (DataSnapshot id : dataSnapshot.getChildren()) {
                Service service = id.getValue(Service.class);
                mServicesList.add(service);
                Toast.makeText(getApplicationContext(), "It's WORKING!" + service, Toast.LENGTH_SHORT).show();
            }
            adaptor = new ServiceAdaptor(getApplicationContext(),mServicesList);
            lvServices.setAdapter(adaptor);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            String error = databaseError.getDetails();
        }
    });`

使用firebase时,我只更改了TextViews,图像不会改变

EDIT2:

Service.java

代码语言:javascript
复制
public class Service {
private int id;
private String name = "Name";
private String desc = "Description";
private boolean led = false;
private boolean ledDisplay = false;
private boolean servo = false;
private boolean motor = false;
private boolean speaker = false;


public Service() {
}

//Constructors
public Service(String name, String desc, boolean led, boolean ledDisplay, boolean servo, boolean motor, boolean speaker) {
    this.name = name;
    this.desc = desc;
    this.led = led;
    this.ledDisplay = ledDisplay;
    this.servo = servo;
    this.motor = motor;
    this.speaker = speaker;
}

//Set/Get

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getDesc() {
    return desc;
}

public void setDesc(String desc) {
    this.desc = desc;
}

public boolean isLed() {
    return led;
}

public void setLed(boolean led) {
    this.led = led;
}

public boolean isLedDisplay() {
    return ledDisplay;
}

public void setLedDisplay(boolean ledDisplay) {
    this.ledDisplay = ledDisplay;
}

public boolean isServo() {
    return servo;
}

public void setServo(boolean servo) {
    this.servo = servo;
}

public boolean isMotor() {
    return motor;
}

public void setMotor(boolean motor) {
    this.motor = motor;
}

public boolean isSpeaker() {
    return speaker;
}

public void setSpeaker(boolean speaker) {
    this.speaker = speaker;
}
}

和ServiceAdaptor.java

代码语言:javascript
复制
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;
}
}

这是它接收到的数据

代码语言:javascript
复制
`{  "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
                          } ]
}`

为了检查布尔检查是否起作用,我更改了图像的可见性,只更改了TextView的颜色,这样就起作用了,所以问题出在图像上

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-12 05:18:01

尝试将其替换为以下内容:

代码语言:javascript
复制
<?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>

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42740383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档