5

クリケット用のアプリを開発しています。私の要件は次のとおりです。チーム 1 を選択すると、使用可能な国名のリストが表示され、国名としてインドを選択すると、インドのプレーヤーのリストが表示され、そこから複数のプレーヤーを選択する必要があります。私はすべてをやった。しかし、私の問題は、プレイヤーを選択するために android.R.layout.simple_list_item_multiple_choice を使用していることです。私は単純なリスト ビューを使用しており、そのリストの背景は黒い画像です。そして、私のリストビューはそのようなものです

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

     />

問題は、リストビューの値が黒く表示されていることです。すでに黒の背景画像があります。また、値も黒色です。そのため、見栄えがよくありません。カスタム アダプタを変更せずに、リストビュー値の色を白に変更する方法。

そして、これは私のアダプタークラスです

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

4 に答える 4

8

TextViewすべての色を変更するには、Custome を作成する必要があります。デフォルトをListView items渡す代わりに、異なる TextColor 属性を持つカスタム リスト項目 XML を渡す必要があります。android.R.layout.simple_list_item_multiple_choiceArrayAdapter

たとえば、フォルダ Layout の下に 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);

編集:

これは、私がテストした正常に動作しているコードです。

   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"
                     />
于 2013-03-26T06:47:04.090 に答える
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

編集:

このコードでフォントの色とリストビューの背景色を使用できるこのリンクを確認してください。

于 2013-03-26T06:55:04.923 に答える
0

Luksprogソリューションは受け入れ可能であり、難しくありません。しかし、ラインなしで

if (position == 1) 
于 2013-05-07T21:43:03.180 に答える
0

スタイル.xml

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

//これを追加

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

     ...other styles

    </resources>

レイアウトxmlで、この属性style="@style/ListFont"をリストビューに入れます

于 2013-03-26T06:23:39.653 に答える