как изменить цвет элементов списка в представлении списка - PullRequest
0 голосов
/ 05 октября 2011

Я использую ListView в классе Activity.Я не использую какой-либо XML-код для ListView.Теперь я не могу изменить цвет элемента Text в listView.

Я изменил цвет фона ListView, но не могу изменить цвет элементов списка.Я получил некоторые ссылки из интернета, но не могу понять это.Может ли кто-нибудь помочь мне сделать это с некоторым кодом?

Мой класс Activity выглядит следующим образом:

ListView listView;
        // Create an array of Strings, that will be put to our ListActivity
        String[] names = new String[] { "India", "Malaysia" };
        TextView tv = new TextView(getApplicationContext());
        tv.setText("Select Country");
        tv.setTextColor(012);

        listView = getListView();
        listView.addHeaderView(tv);

        listView.setCacheColorHint(Color.rgb(36, 33, 32));
        listView.setBackgroundColor(Color.rgb(225, 243, 253));
        this.setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1,names));

    }

Выше tv.setTextColor установлено для заголовка элементов списка.И это не работает, так как просит передать целочисленное значение.Какое целое значение я могу передать для цвета?Кто-нибудь может предложить какой-нибудь код для изменения цвета элементов списка?

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Для цветного списка необходимо настроить его. Для этого подготовьте файл XML:

custom_listitem.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"  
    android:orientation="vertical">


    <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:textColor="#FFFFFF"
            android:id="@+id/list_item"
            android:background="#FF0000" <!-- for red color -->
            />    

</LinearLayout>

Теперь вы должны использовать это в своем адаптере, как-

listView.setListAdapter(new ArrayAdapter<String>(this,R.layout.custom_item,R.id.list_item,names));

И да, вы можете использовать Color.RED, Color.YELLOW и т. Д. Для цветов по умолчанию, наши вы можете использовать "#3C3C3C" (при использовании в xml) или Color.parseColor("3C3C3C") (при использовании программно) для любых цветов, кроме цветов по умолчанию.

0 голосов
/ 05 октября 2011

Вам необходимо создать CustomListAdapter.

private class CustomListAdapter extends ArrayAdapter {

    private Context mContext;
    private int id;
    private List <String>items ;

    public CustomListAdapter(Context context, int textViewResourceId , List<String> list ) 
    {
        super(context, textViewResourceId, list);           
        mContext = context;
        id = textViewResourceId;
        items = list ;
    }

    @Override
    public View getView(int position, View v, ViewGroup parent)
    {
        View mView = v ;
        if(mView == null){
            LayoutInflater vi = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            mView = vi.inflate(id, null);
        }

        TextView text = (TextView) mView.findViewById(R.id.textView);

        if(items.get(position) != null )
        {
            text.setTextColor(Color.WHITE);
            text.setText(items.get(position));
            text.setBackgroundColor(Color.RED); 
            int color = Color.argb( 200, 255, 64, 64 );
                text.setBackgroundColor( color );

        }

        return mView;
    }

}

Элемент списка выглядит следующим образом (custom_list.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/textView"
    android:textSize="20px" android:paddingTop="10dip" android:paddingBottom="10dip"/>
</LinearLayout>

Используйте API-интерфейсы TextView для оформления текста по своему вкусу

, и выиспользовать это так

listAdapter = new CustomListAdapter(YourActivity.this , R.layout.custom_list , mList);
mListView.setAdapter(listAdapter);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...