2014-09-04 20 views
-1

我在rowlayout.xml中有三個textview。但是,當我運行我的應用程序時,除了等級以外的所有值都顯示爲false。ListView值全部顯示爲false(在Android中)

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(); 
     } 
    } 

回答

1

您正在使用3個適配器作爲列表,這是錯誤的。 列表只能匹配1個適配器。

爲什麼只有等級有文字的原因是因爲你有

setListAdapter(adapterRating);   

作爲最後setListAdapter。

您應該構建一個自定義適配器,該適配器需要3個數組,充氣rowlayout.xml,並在您的案例中手動設置所有文本。 您還可以創建一個具有3個字段的新類,並創建該類的數組,並將該數組傳遞到自定義適配器而不是3個數組。

Custom adapter

1

您實現是完全錯誤的,您是在設置列表視圖三種不同的適配器,所以最後一個將覆蓋前一個。

而對於數組使用Java POJO類。

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

然後創建Platform類的列表或數組,並將其傳遞給您的自定義適配器。

您必須使用自定義列表適配器,請通過this link

+0

好的,謝謝。還請你能告訴我如何讓圖像(如上面的ic_launcher)動態設置。我的意思是我正在考慮實施相應評級的圖像。例如:如果評分是4分(滿分爲5分),那麼我會得到4星的圖像。我要求提供相關的代碼或示例,而不是如何創建圖像(在Photoshop中)。 – user3926896 2014-09-04 16:09:09

+0

您可以在適配器中設置圖像getView方法,請通過鏈接,如何使用自定義適配器,然後您也可以使用圖像 – 2014-09-04 16:12:28

0

您需要做的是創建一個自定義適配器。使用基座適配器是錯誤的,請查看PDF瞭解更多信息。