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

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

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

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

12.07.2014, 21:20. Просмотров 1953. Ответов 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; }
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2014, 21:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка? (Программирование Android):

ListView: сбивается содержимое ImageView элемента при скроллинге + как сделать выделение пункта списка при нажатии? - Программирование Android
1. Есть свой класс ContactsSimpleCursorAdapter, в методе public void bindView(View view, Context context, Cursor c) которого происходит...

Цвет ListView при скролинге - Программирование Android
Добрый день. Есть ListView с белым фоном, на время скролинга фон становиться черным, буквы белым. Где то можно настроить цвет на время...

Изменить цвет у item-a в listView - Программирование Android
Привет, вопрос такой. Задача такая: Допустим у меня есть элементы listview разноцветные: (мне нужно при нажатие что бы он стал...

Как обратиться к элементу (button) внутри пункта списка (ListView) - Программирование Android
Здравствуйте! Помогите, пожалуйста Есть активити с ListView. В каждом пункте списка есть пару TextView и один Button. Как и где ...

Как задать черный цвет текста для ListView? - Программирование Android
Добрый день! Пытаюсь разобраться в этом исходнике https://github.com/nexes/Android-File-Manager Возник вопрос, как сделать текст на...

Как при нажатии на пункт ListView перейти на другую форму - Программирование Android
Здравствуйте! У меня возникла проблема при работе с ListView. Суть проблему заключается в следующем при нажатии одного из пункта нужно...

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

Как изменить цвет заголовка приложения? - Программирование Android
Как изменить цвет заголовка приложения (Title Bar)?

Как изменить цвет у Status Bar - Программирование Android
Господа,подскажите,как изменить цвет у Status Bar, при условии что версия SDK &lt; 21 ?

Как изменить цвет меню приложения? - Программирование Android
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Как изменить цвет меню андроид приложения? По умолчанию он черный, можно...

Как можно изменить цвет переключателя SwitchCompat? - Программирование Android
Мне нужно задать свои цвета для переключателя SwitchCompat для его активного и неактивного состояния. Как можно это сделать?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
15.07.2014, 13:12
Ответ Создать тему
Опции темы

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