Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
#1

Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? - Программирование Android

12.07.2014, 21:20. Просмотров 1909. Ответов 10
Метки нет (Все метки)

Здравствуйте, подскажите, пожалуйста, как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?

Вот код MainActivity:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.mycompany.myapp2;
 
import android.app.; import android.os.; import android.view.; import android.widget.; import android.widget.AdapterView.; import android.graphics.;
 
public class MainActivity extends Activity { /* Called when the activity is first created. / @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final String[] sites = new String[] { "iPhone", "Барсик", "Мурзик", "Мурка", "Васька", "Томасина", "Кристина", "Пушок", "Дымка", "Кузя", "Китти", "Масяня", "Симба" }; // используем адаптер данных final Integer[] categories = new Integer[] {0, 1, 2, 3, 4, 5, 6, 7}; // используем адаптер данных
 
    ListView categories_listview = (ListView)findViewById(R.id.categories); // определяем массив типа String 
    ListView sites_listview = (ListView)findViewById(R.id.sites);
    ArrayAdapter<String> sites_adapter = new ArrayAdapter<String>(this, R.layout.sites, R.id.label, sites); 
    categories_adapter categoriesAdapter = new categories_adapter(this, categories);
    categories_listview.setAdapter(categoriesAdapter);
    sites_listview.setAdapter(sites_adapter);
 
categories_listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
    view.setBackgroundColor(Color.YELLOW);
}});
 
    }
 
    }
Вот код адаптера:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.mycompany.myapp2;
 
import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView;
 
public class categories_adapter extends ArrayAdapter<String> {
 
private final Context context; private final Integer[] values; private final Integer[] image_adress = new Integer[]{R.drawable.ic_stub, R.drawable.ic_launcher, R.drawable.ic_stub, R.drawable.ic_launcher, R.drawable.ic_stub, R.drawable.ic_launcher, R.drawable.ic_stub, R.drawable.ic_stub};
 
public categories_adapter(Context context, Integer[] values) { super(context, R.layout.categories, values); this.context = context; this.values = values; }
 
@Override public View getView(int position, View convertView, ViewGroup parent) {
 
LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.categories, parent, false); ImageView icon = (ImageView) view.findViewById(R.id.icon); for (int i = 0; i<values.length; i++){ if (values[position] == i) { icon.setImageResource(image_adress[i]); }
 
}
 
return view; }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2014, 21:20     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?
Посмотрите здесь:
Android Цвет ListView при скролинге
Изменить цвет у item-a в listView Android
Android Как обратиться к элементу (button) внутри пункта списка (ListView)
Android Как задать черный цвет текста для ListView?
Android Как при нажатии на пункт ListView перейти на другую форму
Как изменить цвет у Status Bar Android
Как изменить цвет меню приложения? Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
13.07.2014, 00:25     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #2
В слушателе передать в адаптер position.
В адаптере в getView проверять позицию, если совпала - меняем цвет.
Если пункт с измененным цветом должен быть только один, то в слушателе надо возвращать предыдущий цвет прежнему пункту.
Как то так)
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
13.07.2014, 00:27  [ТС]     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #3
Пытался сделать с помощью талса делать с помощью:
XML
1
2
3
4
5
6
7
8
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#ffffff" />
        </shape>
    </item>
 
</layer-list>
И

Java
1
    categories_listview.setSelector(R.drawable.categories_item_style);
Получилось:
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
13.07.2014, 00:35  [ТС]     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #4
Вот
Вложения
Тип файла: zip MyApp2_1.0.apk.zip (299.5 Кб, 16 просмотров)
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
13.07.2014, 00:36  [ТС]     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #5
Rube, хотел так сделать, но при проматывании списка выделение пропадает
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
13.07.2014, 02:33     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #6
Цитата Сообщение от Rube Посмотреть сообщение
В адаптере в getView проверять позицию, если совпала - меняем цвет.
на else ставим цвет по умолчанию, ничего не пропадает.
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
13.07.2014, 02:45  [ТС]     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #7
Rube, как проверять позицию в адаптере ? Я ее проверял в методе setOnItemClickListener
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
13.07.2014, 21:49     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #8
Ну правильно, в слушателе получаем, в адаптер отправляем (в метод). Я ж писал.
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
13.07.2014, 23:32  [ТС]     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #9
Если позиция совпала с чем?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
15.07.2014, 10:29     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #10
C int position в методе getView.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.07.2014, 13:12     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?
Еще ссылки по теме:
Android Как изменить цвет заголовка приложения?
Android Как можно изменить цвет переключателя SwitchCompat?
Как изменить цвет одного из элементов ToolBar Android
Как изменить цвет кнопки, на которую установлен селектор? Android
Как изменить цвет рабочего окна с темного на белый? Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
15.07.2014, 13:12  [ТС]     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? #11
Я так делал, ничего не получилось. Я уже решил проблему
Yandex
Объявления
15.07.2014, 13:12     Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru