ListView值都显示为false(在Android中)

时间:2014-09-04 15:59:22

标签: java android xml android-layout listview

我在rowlayout.xml中有三个textview。但是,当我运行我的应用程序时,除了评级之外的所有值都显示为false。

rowlayout.xml:

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

    <ImageView
        android:id="@+id/icon"
        android:layout_width="44dp"
        android:layout_height="44dp"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="4dp"
        android:src="@drawable/ic_launcher" >
        </ImageView>

    <TextView
        android:id="@+id/rating"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="4dp"
        android:layout_marginRight="10dp"        
        android:layout_marginTop="4dp"
        android:text="@+id/rating" />

    <TextView
        android:id="@+id/distance"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toLeftOf="@id/rating"    
        android:layout_marginLeft="4dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="4dp"
        android:text="@+id/distance" />

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/icon"
        android:text="@+id/name"
        android:textSize="40sp" />

</RelativeLayout>

和MainActivity.java类:

package com.SahilSiddesh.far4;    
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class MainActivity extends ListActivity {
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
    "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
    "Linux", "OS/2" };
    String[] distance = new String[] {"1","2","3","4","5","6","7","8","9","10"};
    String[] rating = new String[] {"2","2.5", "5", "4.6", "0","1","3","4","5","1"};

    // use your custom layout
    ArrayAdapter<String> adapterValues = new ArrayAdapter<String>(this,
    R.layout.rowlayout, R.id.name, values);
    setListAdapter(adapterValues);

    ArrayAdapter<String> adapterDistance = new ArrayAdapter<String>(this,
        R.layout.rowlayout, R.id.distance, distance);
    setListAdapter(adapterDistance);

    ArrayAdapter<String> adapterRating = new ArrayAdapter<String>(this,
            R.layout.rowlayout, R.id.rating, rating);
    setListAdapter(adapterRating);
      }

      @Override
      protected void onListItemClick(ListView l, View v, int position, long id) {
        String item = (String) getListAdapter().getItem(position);
        Toast.makeText(this, item + " selected", Toast.LENGTH_LONG).show();
      }
    } 

3 个答案:

答案 0 :(得分:1)

您的实现完全错误,您在列表视图中设置了三个不同的适配器,因此最后一个适配器将覆盖前一个。

对于数组使用Java POJO类。

class Platform{
     String os;
     String distance;
     String rating;
}

然后创建Platform类的列表或数组,并将其传递给自定义适配器。

您必须使用自定义列表适配器,请浏览this link

答案 1 :(得分:1)

您使用3个适配器作为列表,这是错误的。 列表应该只与1个适配器匹配。

仅评分有文字的原因是因为你有

   setListAdapter(adapterRating);          

作为最后一个setListAdapter。

您应该构建一个自定义适配器,该适配器需要3个数组,对rowlayout.xml进行充气,并在您的情况下手动设置所有文本。 您还可以创建一个包含3个字段的新类,并创建该类的数组,并将该数组传递给自定义适配器而不是3个数组。

Custom adapter

答案 2 :(得分:0)

您需要做的是创建自定义适配器。使用基本适配器是错误的,请查看此PDF以获取更多信息。