2016-10-25 22 views
0

アイテムがチェックされているときに、選択したテキストの色を変更したい。私はここでTextViewCheckBoxListViewで選択したテキストを変更する方法CheckBox

でカスタムアイテムにカスタムアダプタを作った私のitem.xmlです:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 

<TextView 
android:id="@+id/txtRow" 
android:text ="TEST" 
android:layout_alignParentLeft="true" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
/> 

<CheckBox 
android:id="@+id/ckbBox" 
    android:layout_alignParentRight="true" 
    android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
    /> 
</RelativeLayout> 

そして、私のアダプタ:

public class ListViewAdapter : BaseAdapter,IOnCheckedChangeListener 
{ 
    List<string> lstData = new List<string>(); 
    Activity activity; 
    LayoutInflater inflater; 
    View itemView; 
    public ListViewAdapter(Activity activity,List<string> lstData) 
    { 
     this.activity = activity; 
     this.lstData = lstData; 
    } 
    public override int Count 
    { 
     get 
     { 
      return lstData.Count; 
     } 
    } 

    public override Java.Lang.Object GetItem(int position) 
    { 
     return position; 
    } 

    public override long GetItemId(int position) 
    { 
     return position; 
    } 

    public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     inflater = (LayoutInflater)activity.ApplicationContext.GetSystemService(Context.LayoutInflaterService); 
     itemView = inflater.Inflate(Resource.Layout.item, null); 

     TextView txtRow = itemView.FindViewById<TextView>(Resource.Id.txtRow); 
     CheckBox ckbRow = itemView.FindViewById<CheckBox>(Resource.Id.ckbBox); 

     ckbRow.SetOnCheckedChangeListener(this); 

     if (ckbRow.Checked) 
      txtRow.Text = "HEHEHE"; 


     return itemView; 

    } 

    public void OnCheckedChanged(CompoundButton buttonView, bool isChecked) 
    { 
     if (isChecked) 
     { 
      var txtRow = itemView.FindViewById<TextView>(Resource.Id.txtRow); 
      txtRow.SetTextColor(Android.Graphics.Color.White); 
     } 
    } 
} 

しかし、私がチェックCheckBoxにTextViewが期待どおりに色を変更しません。

答えて

0

また、GetViewメソッドを編集する必要があります。おそらくそれが更新され、テキストの色は同じです。この

public override View GetView(int position, View convertView, ViewGroup parent) 
    { 
     inflater = (LayoutInflater)activity.ApplicationContext.GetSystemService(Context.LayoutInflaterService); 
     itemView = inflater.Inflate(Resource.Layout.item, null); 

     TextView txtRow = itemView.FindViewById<TextView>(Resource.Id.txtRow); 
     CheckBox ckbRow = itemView.FindViewById<CheckBox>(Resource.Id.ckbBox); 

     ckbRow.SetOnCheckedChangeListener(this); 

     if (ckbRow.Checked) 
      { 
      txtRow.Text = "HEHEHE"; 

      txtRow.SetTextColor(Android.Graphics.Color.White); 
      } 
      else 
      { 
      //default color 
      txtRow.SetTextColor(Android.Graphics.Color.Black); 
      } 

     return itemView; 

    } 
+0

のように編集してみてください私は – EddyLee

+0

をクリックしたときにありがとうしかし、私はリアルタイムを変更したいあなたがクリックされたとき、それはまたあなたのメソッドgetViewメソッドも有効ではありませんbecouse、まだ同じビューと色を更新します。 getViewメソッドでブレークポイントを設定しようとすると、clikのチェックボックスの後に何が起きているのかが分かります。 –

関連する問題