Как получить доступ к элементу списка при создании / начале действия? - PullRequest
0 голосов
/ 07 декабря 2011

Для моего приложения я получаю номер из базы данных. Когда действие начинается, оно должно показывать номер другим цветом, чем другие числа в списке.

После извлечения данных из базы данных это мой код:

int row = 5;
TextView child = (TextView)ListView.GetChildAt(row);
child.SetTextColor(Color.Red);

Этот код был помещен в функцию OnCreate. Я продолжал возвращать нулевое значение для дочернего textview. Затем я обнаружил, что причина нулевого значения заключается в том, что в функции OnCreate просмотр списка по-прежнему должен отображаться. Затем я переместил код в функцию OnStart (), но это тоже не сработало.

Может кто-нибудь сказать мне, как я должен извлечь дочернюю строку из списка в процессе создания / начала действия?

1 Ответ

1 голос
/ 07 декабря 2011

, даже если вы сможете сделать это таким образом, у вас будут проблемы с повторным использованием этого вида ... (другие прокраски будут окрашены в красный цвет при прокрутке вверх и вниз).Вам нужно переопределить свой адаптер и установить цвет представления в нужной вам позиции в getView () -

TextView myText = (TextView) view.findViewById(R.Id ....
if (pos==5)
    myText.setTextColor(Color.Red);
else 
    myText.setTextColor(Color.Black); //original color..

РЕДАКТИРОВАТЬ:

вам не нужноесть пользовательский XML.если вы найдете XML для Android, вы можете найти его идентификатор.Я верю своему android.R.id.text1.так что ваш адаптер должен выглядеть примерно так:

myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1) {
                 @Override
                 public View getView(int position, View v, ViewGroup parent) {
                     if (v == null) {
                            LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                            v = inflater.inflate(android.R.layout.simple_list_item_1, null);
                        }
                     View view = super.getView(position, v, parent);
                     if (position==5)
                         view.setTextColor(Color.Red);
                     else 
                         view.setTextColor(Color.Black); //original color..
 }
 myList.setAdapter(myAdapter);

не уверен, что я все понял, но что-то вроде этого .. надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...