2013-03-26 2 views
0

에 관련된 목록보기를 채워지면 :내가 ListFragment 내부에이 코드를 가지고 ListFragment

TextView tv = (TextView) this.getListView().getChildAt(0); 
tv.setBackgroundColor(getResources().getColor(R.color.White)); 
tv.setTextColor(getResources().getColor(R.color.OtherColor)); 

는이 코드 onActivityCreated를 쓰고 싶었지만, TV는 null입니다.

이 코드를 onListItemClick에 쓰면 완벽하게 작동합니다.

내가 원하는 것은 불가능합니까?

코드 :

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    String[] values = new String[] { getResources().getString(R.string.menu_partida), 
       getResources().getString(R.string.menu_acciones), 
       getResources().getString(R.string.menu_resultado) }; 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item_menu, values); 
    setListAdapter(adapter); 
} 

답변

0

조회수 만은 "창조"모든 콜백이 실행 된 후,이 이벤트에 대한 콜백이없는립니다. 그러나 할 수 있습니다 post() UI를 처리기에의 Runnable과 같은 일 달성 :

getListView().post(new Runnable() { 
    public void run() { 
     TextView tv = (TextView) this.getListView().getChildAt(0); 
     tv.setBackgroundColor(getResources().getColor(R.color.White)); 
     tv.setTextColor(getResources().getColor(R.color.OtherColor)); 
    } 
} 

하지만 실제로는,이 변화가 행 레이아웃은 ListView를 재활용하기 때문에 당신이 무엇을 기대하지 않을 것이다. (스크롤하는 동안 eradict 동작이 나타납니다.) position 0에만에 행의 레이아웃을 변경하려면 사용자 지정 어댑터를 만들어야합니다. Runnable은 3 행 밖에 없으므로 빠져 나갈 수 있지만, 가장 좋은 해결책은 Adapter를 확장하는 것입니다.

+0

샘 감사합니다. 나는 그것을하기위한 또 다른 방법을 찾아야한다고 생각한다. – Zoroastro