Android изменение цвета текста элемента listview

Я пытаюсь изменить цвет текста некоторых элементов (или цвет backgroung) в представлении списка на основе флага . после долгого поиска я не узнал, как это сделать, я вызываю цикл ниже после определенного действия, чтобы изменить цвет:

ListView _listView = (ListView) findViewById(R.id.listView2);

        for (int i=0;i<=_listView.getCount();i++)
        {   
           if(Falg == True)
           {
            //here i want to change the list view item color or backgroud color
           }
        }

4 ответов


вы можете переопределить метод getView адаптера массива и изменить цвет:

ArrayAdapter<String> adapter = 
                    new ArrayAdapter<String>(getApplicationContext(), 
                    android.R.layout.simple_list_item_1, 
                    myList) {

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View view = super.getView(position, convertView, parent);
        TextView text = (TextView) view.findViewById(android.R.id.text1);

        if (flag == True) {
            text.setTextColor(Color.BLACK);
        }   

        return view;
    }
};

вы можете сделать это непосредственно в ваш заказ Adapter.

посмотреть адаптер.getView адаптера()

вы можете раздуть макет строки в этом методе и динамически изменять цвета представления и другие вещи.


создайте пользовательский макет, определите свой цвет в этом макете.

такой:

<? xml version="1.0" encoding=" utf-8 "? >
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
 android:id="@+id/tv"
 android:textColor="@color/white"  // Here You define your desired color
 android:layout_width="fill_parent"
 android:gravity="center"
 android:layout_height="fill_parent"/>

используйте этот макет в своем адаптере, например:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
    this, R.layout.custom_textview, info);
lv.setAdapter(adapter); 

таким образом, вам не нужно использовать другой адаптер.


вы можете установить стиль, цвет шрифта .... как

textView.setText(Html.fromHtml("<b><u>"+string+"<b><u>"));

при заполнении текста в listview.