2016-10-25 2 views
0

항목을 선택하면 선택한 텍스트 색을 변경하고 싶습니다.ListView에서 선택한 텍스트를 변경하는 방법 CheckBox

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

하지만 검사 때이 TextView하고 여기에

CheckBox와 사용자 정의 항목에 사용자 정의 어댑터를했습니다 내 item.xml입니다 CheckBox에 TextView가 예상대로 색을 변경하지 않습니다.

답변

0

GetView 메서드를 편집해야합니다. 아마도 새로 고침되고 텍스트 색상이 여전히 동일 할 것입니다. 당신의 방법의 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 메서드에서 중단 점 설정을 시도하면 clik 체크 상자 이후에 어떤 일이 발생하는지 볼 수 있습니다. –

관련 문제