2013-03-26 3 views
0

у меня есть этот код внутри ListFragment:Когда заселяли ListView, связанный с ListFragment

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

Я хотел написать этот код onActivityCreated, но телевизор является нулевым.

Если я напишу этот код внутри 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 Хэндлер и достичь того же:

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. (При прокрутке вы увидите поведение, связанное с эрадицией.) Вы должны создать пользовательский адаптер, чтобы изменить макет для строки на position 0только. Вы можете уйти с Runnable, так как у вас всего три строки, но лучшим решением является расширение Adapter.

+0

Спасибо Сэм. Я думаю, что я должен найти другой способ сделать это – Zoroastro

Смежные вопросы