2013-03-26 57 views
5

我正在開發板球應用程序。我的要求是這樣的,如果我選擇第一隊,可用國家名稱的列表必須顯示,如果我選擇國家名稱作爲印度,來自印度的球員列表必須顯示,並且我已經從中選擇了多名球員。我做了一切。但我的問題是我使用android.R.layout.simple_list_item_multiple_choice選擇球員。我使用簡單的列表視圖,並且該列表的背景是黑色圖像。和我的列表視圖是這樣的更改簡單ListView的文本顏色多選Android

<ListView 
    android:id="@+id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:layout_weight="8.5" 
    android:cacheColorHint="#00000000" 

    /> 

現在問題是listview值顯示黑色的顏色。我已經有黑色的背景圖像。而且價值也是黑色的。所以它看起來不太好。如何在不更改自定義適配器的情況下將listview值的顏色更改爲白色。

這是我的適配器類

adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice,playersName); 
    lvview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    lvview.setAdapter(adapter); 

回答

0

styles.xml

<?xml version="1.0" encoding="utf-8"?> 
    <resources> 
    ...other styles 

//在佈局XML添加此

<style name="ListFont" parent="@android:style/Widget.ListView"> 
    <item name="android:textColor">#FFFFFF</item> 
    </style> 

    ...other styles 

    </resources> 

把這個屬性style="@style/ListFont"到的ListView

+0

機器人:文字顏色=「@色/白」 – sprixes 2013-03-26 06:29:19

+0

答案是創建具有屬性顏色/白一個TextView,並把在ListView看到http://stackoverflow.com/questions/4533440/ android-listview-text-color – sprixes 2013-03-26 06:33:41

+0

好的,那麼如何使用多選listview。 – user2210356 2013-03-26 06:36:12

8

你哈已創建Custome TextView以更改所有ListView items的顏色,而不是將默認android.R.layout.simple_list_item_multiple_choice傳遞給ArrayAdapter,而應傳遞具有不同TextColor屬性的自定義列表項XML。

例如,在文件夾的佈局custom_list_item.xml創建:

<?xml version="1.0" encoding="utf-8"?> 
    <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/textView" 
     android:layout_width="fill_parent" 
     android:layout_height="?android:attr/listPreferredItemHeight" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:gravity="center_vertical" 
     android:checkMark="?android:attr/listChoiceIndicatorSingle" 
     android:paddingLeft="6dip" 
     android:paddingRight="6dip" 
     android:textColor="#FF00FF" 
     /> 

然後傳遞它到適配器像如下:

 new ArrayAdapter<String>(this, R.layout.custom_list_item, playersName); 

EDITED:

下面是代碼這工作正常我已經測試。

lv.setAdapter(new ArrayAdapter<String>(this, R.layout.custom_list_item, playersName)); 
    lv.setBackgroundColor(Color.BLACK); 
    lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    lv.setOnItemClickListener(new OnItemClickListener() 
    { 
     @Override 
     public void onItemClick(AdapterView<?> p_arg0, View p_arg1, int p_arg2, long p_arg3) 
     { 
      my_sel_items = new String("Selected Items"); 
       SparseBooleanArray a = lv.getCheckedItemPositions(); 
       for (int i = 0; i < a.size(); i++) { 
        if (a.valueAt(i)) { 
         my_sel_items = my_sel_items + "," 
           + (String) lv.getAdapter().getItem(i); 
        } 
       } 
       Log.v("values", my_sel_items); 
     } 
    }); 

列表視圖的佈局

 <ListView 
         android:id="@+id/android:list" 
         android:layout_marginTop="60dip" 
         android:layout_width="fill_parent" 
         android:layout_height="fill_parent" 
         android:textColor="#000000" 
        /> 
+0

它應該工作我已經試過並測試它,它的工作也。 – GrIsHu 2013-03-26 07:14:59

+0

向我展示你如何實現? – GrIsHu 2013-03-26 07:15:47

+0

你可以發佈一些代碼或屏幕截圖,以便我可以理解什麼是完全缺乏。 – GrIsHu 2013-03-26 07:18:29

0

檢查下面的代碼:

package com.example.mapsdemo; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.util.SparseBooleanArray; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.Spinner; 

public class MainActivity extends Activity { 

    ArrayList<String> a = new ArrayList<String>(); 

    private ListView lView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     fillarray(); 
     lView = (ListView) findViewById(R.id.listView1); 
     lView.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_multiple_choice, a)); 
     lView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

     lView.setOnItemClickListener(new OnItemClickListener() { 

      private String my_sel_items; 

      public void onItemClick(AdapterView arg0, View arg1, int arg2, 
        long arg3) { 
       // List list = new ArrayList(); 
       my_sel_items = new String("Selected Items"); 
       SparseBooleanArray a = lView.getCheckedItemPositions(); 

       for (int i = 0; i < a.size(); i++) { 
        if (a.valueAt(i)) { 
         my_sel_items = my_sel_items + "," 
           + (String) lView.getAdapter().getItem(i); 
        } 
       } 
       Log.v("values", my_sel_items); 
      } 
     }); 
    } 

    private void fillarray() { 
     // TODO Auto-generated method stub 
     a.clear(); 
     a.add("a"); 
     a.add("b"); 
     a.add("c"); 
     a.add("d"); 
     a.add("e"); 

    } 

} 

您造成日誌

03-26 12:25:06.106: V/values(3301): Selected Items,a 
03-26 12:25:06.810: V/values(3301): Selected Items,a,b 
03-26 12:25:07.466: V/values(3301): Selected Items,a,b,c 
03-26 12:25:08.136: V/values(3301): Selected Items,a,b,c,d 

編輯:

檢查這個link您可以使用此代碼的任何字體顏色& ListView的背景色。

+0

我不問這個..我想listview文本顏色爲白色..我怎麼能這樣做 – user2210356 2013-03-26 07:02:50

+0

因爲你可以使用自定義佈局..等病給你的代碼.. – 2013-03-26 07:04:20

+0

檢查我編輯的答案.. – 2013-03-26 07:17:43

0

Luksprog解決方案是可以接受的並不難。但是,如果沒有線

if (position == 1)