Как я могу чередовать цвета между Listviews? - PullRequest
0 голосов
/ 09 августа 2011

Я добавляю простые данные в список (имя и время) и хочу иметь возможность чередовать белый и серый фон для каждой строки таблицы.В настоящее время я устанавливаю цвет фона в файле XML.

Я использую код из http://saigeethamn.blogspot.com/2010/04/custom-listview-android-developer.html

Спасибо

РЕДАКТИРОВАТЬ мой код выглядит следующим образом

  //R.layout.custom_list_view is just a list view with grey background
   //(I want it white for every other one)
  //On Create section
  setContentView(R.layout.custom_list_view);

    SimpleAdapter adapter = new SimpleAdapter(
            this,
            list,
            R.layout.custom_row_view,
            new String[] {"pen","price"},
            new int[] {R.id.text1,R.id.text2}
            );
    //see function below
    populateList();
    setListAdapter(adapter);
}

static final ArrayList<HashMap<String,String>> list = 
    new ArrayList<HashMap<String,String>>(); 

private void populateList() {
    //for loop would go here
    HashMap<String,String> temp = new HashMap<String,String>();
    temp.put("pen","MONT Blanc");
    temp.put("price", "200.00$");
    list.add(temp);

    HashMap<String,String> temp2 = new HashMap<String,String>();
    temp2.put("pen","Parker");
    temp2.put("price", "400.00$");
    list.add(temp2);
   //theres no place to change the background of my listview

FinalРедактировать.Вот простое решение http://ykyuen.wordpress.com/2010/03/15/android-%E2%80%93-applying-alternate-row-color-in-listview-with-simpleadapter/ Измените адаптер SimpleAdapter на специальный SpecialAdapter, найденный на веб-сайте.Спасибо всем за помощь

Ответы [ 2 ]

2 голосов
/ 09 августа 2011

Вы должны реализовать собственный адаптер и установить там цвет фона:

public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        View convertViews;
        if (convertView == null) {
            convertViews = mInflater.inflate(R.layout.startingsquadlistview, null);
            holder = new ViewHolder();
            holder.text = (TextView) convertView.findViewById(R.id.textview);
            convertViews.setTag(holder);
        } else {
            convertViews = convertView;
            holder = (ViewHolder) convertViews.getTag();
        }

        if(position % 0) {
            convertView.setBackground(context.getResources().getColor(R.color.col1);
        else
            convertView.setBackground(context.getResources().getColor(R.color.col2);

        return convertViews;
    }
0 голосов
/ 09 августа 2011

Вы можете создать собственный адаптер списка и создать глобальную логическую переменную под названием alternateColor. Затем в вашей функции getView () поместите это (в данном случае 'tv' - это ваше текстовое представление):

if (alternateColor)
{
    tv.setBackgroundColor(Color.GRAY);
    alternateColor = false;
}
else if (!alternateColor)
{
    tv.setBackgroundColor(Color.WHITE);
    alternateColor = true;
}

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

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