我在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();
}
}
答案 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个数组。
答案 2 :(得分:0)
您需要做的是创建自定义适配器。使用基本适配器是错误的,请查看此PDF以获取更多信息。