Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/12: Рейтинг темы: голосов - 12, средняя оценка - 5.00
Muhammad97
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
1

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

12.07.2014, 21:20. Просмотров 2285. Ответов 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: сбивается содержимое ImageView элемента при скроллинге + как сделать выделение пункта списка при нажатии?
1. Есть свой класс ContactsSimpleCursorAdapter, в методе public void...

Цвет ListView при скролинге
Добрый день. Есть ListView с белым фоном, на время скролинга фон становиться...

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

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

Как задать черный цвет текста для ListView?
Добрый день! Пытаюсь разобраться в этом исходнике...

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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