Стилизация добавила строки в ArrayAdapter ListView Android

1

У меня есть ListView, который я хочу использовать с ArrayAdapter для добавления разных стилизованных строк. Строки создаются в разных состояниях в моем приложении, и в зависимости от разных состояний строки должны быть стилизованы (например, цвета и прочее).

Вот несколько псевдокодов:

при создании:

mArrayAdapter = new ArrayAdapter(this, R.layout.message);
mView = (ListView) findViewById(R.id.in);
mView.setAdapter(mArrayAdapter);

В разных состояниях, которые запускаются другим потоком с помощью MessageHandler, добавьте строку в список, содержащий сообщение:

mArrayAdapter.add("Message");

Это отлично работает, сообщения появляются в списке в зависимости от разных состояний, но я хочу, чтобы строки были разными. Как это сделать? Является ли решение создать пользовательский ArrayAdapter с помощью специального метода Add()?

Теги:
listview
android-arrayadapter

1 ответ

1
Лучший ответ

Что вам нужно сделать, так это создать пользовательский ArrayAdapter и переопределить метод getView(). Там вы можете решить, применять ли другой стиль к строке или нет. Например:

class CustomArrayAdapter extends ArrayAdapter {
    CustomArrayAdapter() {
        super(YourActivity.this, R.layout.message);
    }

    public View getView(int position, View convertView,
                                            ViewGroup parent) {
        View row=convertView;

        if (row==null) {                                                    
            LayoutInflater inflater=getLayoutInflater();

            row=inflater.inflate(R.layout.message, parent, false);
        }

        // e.g. if you have a TextView called in your row with ID 'label'
        TextView label=(TextView)row.findViewById(R.id.label);
        label.setText(items[position]);

        // check the state of the row maybe using the variable 'position'
        if( I do not actually know whats your criteria to change style ){
            label.setTextColor(blablabla);
        }

        return(row);
    }
}
  • 0
    Спасибо, работает как шарм после подстройки сома!
  • 0
    Возникли новые проблемы с этим. label.setTextColor () получает всю метку и устанавливает цвет для каждой строки. Следует просто установить цвет для новой строки, а не для элементов, уже находящихся в списке.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню