2014-06-20 5 views
0

나는 안드로이드에서 시작하여 ListActivity을 사용하여 기본해야 할 일 목록을 만들고 있습니다. 기본적으로 항목 (항목)을 클릭 할 때마다 해당 항목에 해당 SharedPreferences 파일이 표시 (또는 표시되지 않음)됩니다.클릭없이 ListView에서 TextView를 가져 오는 방법은 무엇입니까?

protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 

    SharedPreferences savedList = this.getPreferences(0); 
    String item = savedList.getString(position + "", ""); 

    if (item.contains(checked)) { 
     item = item.replace(checked,""); 
     SaveItem(item, position); 
     ((TextView)v).setPaintFlags(((TextView)v).getPaintFlags() & (~ Paint.STRIKE_THRU_TEXT_FLAG)); 
    } 
    else { 
     item = checked + item; 
     SaveItem(item,position); 
     ((TextView)v).setPaintFlags(((TextView)v).getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 
    }  
} 

(. (가) 여기서 "선택"그냥 문자열 임) OnCreate 방법에 한테 SharedPreferences 파일을 읽고 다음과 같이 또한 해당 TextView 또한 setPaintFlags을 사용하여 베 (또는 unslashed)되고

for (int i = 0;; i++){ 
    pos = i; 
    listitems = savedList.getString(""+i,""); 
    if (listitems.matches("")){ //if first entry in saved file is empty, stop the loop 
     break; 
    } 
    else if(listitems.contains(checked)){ 
     listitems.replace(checked,""); 
     listItems.add(listitems); 
     adapter.notifyDataSetChanged();  
     TextView textview = (TextView) (getListView()).getChildAt(i); 
     textview.setPaintFlags(textview.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); 
    } 
    else{ 
     listItems.add(listitems); 
     adapter.notifyDataSetChanged(); 
    } 
} 

이 두 가지 문제가 발생하여, 작동하지 않는 것 : 다음과 같이 그것을 공격하는, 내가 다시하고 싶은, 사람이 표시되어있는 체크리스트, 그리고 중의 항목을 다시 처음 , 내가 체크 된 것들로부터 "체크 된 것"을 제거하더라도, 아이템 appea ListView의 링에는 여전히 "확인 됨"이 있습니다. 둘째, 파업이 나타나지 않아 해당 TextView이 선택되지 않았다고 믿게됩니다.

편집 : 뭔가를 포함하는 것을 잊었습니다.

답변

0

View v은 TextView가 아니며 TextView에 ID가있는 경우 v.findViewById을 사용하여 onListItemClick에서 대상 TextView를 찾을 수 있습니다.

TextView textview = (TextView) (getListView()).getChildAt(i); 

당신은 또한 getListView().getChildAt(i).findViewByid

+0

최종 행이 정수를 반환하지 않습니까? 반면에 ListView에서 TextView를 검색하려고합니다. – badraccoon

+0

findViewById가보기를 반환합니다 ... – popo

0

내가 제대로 질문을하지 않을 수 있습니다하지만 난 당신의 목록 항목 에서 당신이 Textview 원하는 것을 얻을 무엇이든 onListItemClick 당신은 당신의 Textview

TextView textview = ((TextView) ((ViewGroup) v).getChildAt(1)); 
를 얻을 수 있습니다

여기서 getChildAt(1) 은 목록 항목의 색인 번호입니다.

관련 문제