0

クリケット用のアプリを開発しています。その中で、私の目的は、ListView で特定のチームのプレーヤーを選択することです。ここでは、リストから複数のプレーヤーを選択できます。複数選択リストビューを備えたシンプルなアダプターを使用しています。

          adapter=new ArrayAdapter<String>(this,R.layout.custom_list_view,R.id.textView_color,playersName);
    lvview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

そして、複数選択にcheckedTextViewを使用しています。以下はCheckedTextViewを使用した私のcustom_list_viewです

       <CheckedTextView
   android:id="@+id/textView_color"
   android:layout_width="fill_parent"
   android:layout_height="?android:attr/listPreferredItemHeight"
   android:textAppearance="?android:attr/textAppearanceLarge"
   android:gravity="center_vertical"
   android:checkMark="?android:attr/listChoiceIndicatorMultiple"
   android:paddingLeft="6dip"
   android:paddingRight="6dip"
   android:textColor="#FFffFF"
   />

そして今、私の問題は、ユーザーがリストから特定のプレーヤーを選択したときにリストビューの色を変更したいということです。どのプレイヤーが選択されているかをユーザーに示すのが好きです。選択していない選手と区別するために、選択した選手の色を赤に変えています。

    lvview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View v, int position,long id) {
            // TODO Auto-generated method stub
            SparseBooleanArray checked = lvview.getCheckedItemPositions();      

            if(checked.get(position))
            {
                //chkTextView.setTextColor(Color.GREEN);

                counter_selected++;
                selectedCounterText.setText("" + counter_selected);                 
            }
            else
            {
                counter_selected--;
                selectedCounterText.setText("" + counter_selected);
            }
        }
    }); 

選択したプレーヤーの色をデフォルトの色から赤に変更する方法。私はそれを行うのに苦労しています..それを見つけるのを手伝ってください..

4

4 に答える 4

2

以下のコードを使用して回答を得ました

mainActivity アダプター クラス内

   adapter=new ArrayAdapter<String>(getApplicationContext(), R.layout.text_view,R.id.textView1,players);

    lvview.setAdapter(adapter);

main.xml は以下のようになります

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

そして、私のカスタムレイアウトフィールドは以下のようなものです

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="23dp"
    android:text="TextView"
    android:textColor="#ffffff" />

<CheckBox
    android:id="@+id/checkBox1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/textView1"
    android:layout_alignBottom="@+id/textView1"
    android:layout_alignParentRight="true"
    android:focusable="false"
  android:focusableInTouchMode="false"
    />

そして、ListView の MainActivity onitem クリック リスナーで、カスタム レイアウト ビューを呼び出し、コードを以下に示します。

            lvview.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> l, View v, int position,
                long id) {
            // TODO Auto-generated method stub
            SparseBooleanArray checked = lvview.getCheckedItemPositions();  
            checkedText=(CheckBox) v.findViewById(R.id.checkBox1);
            checkedList=(TextView) v.findViewById(R.id.textView1);
            if(checkedText.isChecked()==false)
            {
                counter_selected++;
                checkedText.setChecked(true);
                checkedList.setTextColor(Color.RED);
                selectedCounterText.setText("" + counter_selected);                 

            }
            else
            {
                counter_selected--;
                checkedText.setChecked(false);
                 checkedList.setTextColor(Color.WHITE);
                 selectedCounterText.setText("" + counter_selected);        
            }
        }
    });

そして、それは私の問題を解決しました..

于 2013-04-04T09:02:34.917 に答える
1

イベントの背景を定義するには、statelist drawable を使用する必要があります。簡単にするために、これは非常によく似た質問です。 リストビュー

于 2013-04-04T05:15:20.917 に答える
0

問題は、単純なアダプター(使用したもの) を介してそれを行うことができないことです。

カスタム行項目を定義する必要があります。リストビューにバインドされるリスト項目ごとにカスタム XML レイアウトを定義する必要があります。customAdapterこれにより、メソッドを持つを作成する必要がありますgetView()。その中で、行の子を簡単にフェッチして、TextViewそのプロパティを変更できます。

このチュートリアルに従ってください

于 2013-04-04T05:42:28.407 に答える
0

まず、次のようにセレクターxmlを定義できます

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@color/red" />
    <item android:drawable="@drawable/listitem_normal" />
</selector>

次に、次のようにandroid:listSelector="@drawable/listitem_selector"を使用して ListItem のセレクターを設定できます。

<ListView 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:listSelector="@drawable/listitem_selector"
   />
于 2013-04-04T05:38:52.907 に答える