Интерфейс, диалоги, темы, стили, меню
-
arturba
- Сообщения: 13
- Зарегистрирован: 23 янв 2015, 16:48
Сообщение
arturba » 24 июл 2015, 14:35
Проблема!!! Когда я нажимаю первий итем мне откриваеться новий клас и меняеться заставка и цвет текста но после нажатия первого Итема меняється цвет заставки и цвет текста на каждом 11 Итеме почему ето так?? мой код:
Код: Выделить всё
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.plan);
format1 = new SimpleDateFormat("E dd.MM");
calendar = Calendar.getInstance();
final String[] day = new String[365];
for (int i = 0; i < 365; i++) {
day[i] = " " + format1.format(calendar.getTime()) + " " + (i+1) + " " + getResources().getString(R.string.day);
calendar.add(Calendar.DAY_OF_YEAR, 1);
}
lv1 = (ListView) findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
this, R.layout.button, day);
lv1.setAdapter(adapter);
lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
((TextView) view).setTextColor(Color.BLACK);
(view).setBackgroundResource(R.drawable.redcolor);
ShowHTML("file:///android_asset/" + (l + 1) + ".htm", view);
}
});
}
public void ShowHTML(String AFilePath, View view) {
Intent intent = new Intent(view.getContext(), citania.class);
intent.setData(Uri.parse(AFilePath));
startActivity(intent);
}
}
Помогите пожалуйста!!!
-
Вложения
-
- Screenshot_2015-07-24-13-31-10.png (279.68 КБ) 3343 просмотра
-
- Screenshot_2015-07-24-13-04-05.png (269.28 КБ) 3343 просмотра
-
Dark67
- Сообщения: 72
- Зарегистрирован: 23 июл 2012, 23:11
Сообщение
Dark67 » 24 июл 2015, 20:19
Потому что вьюхи в ListView переиспользуются.
-
arturba
- Сообщения: 13
- Зарегистрирован: 23 янв 2015, 16:48
Сообщение
arturba » 25 июл 2015, 22:36
Sasha2dx писал(а):А хз, хардкор какой то.) Для начала, фон для итемов стоит присваивать через хмл, в том числе и для итемов при нажатии, вот пример:
http://stackoverflow.com/a/16976534/4940600
А там глядишь и понятнее станет....
Пожалуйста а можете мне написать конкретно чтоби запоминало ето нажатие я пробовал но ниче не получаеться когда нажимаю кнопка становиться красной но когда нажимаю назад все опять зеленое
<selector xmlns:android="
http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@drawable/buttoncolor" />
<item android:state_selected="false" android:drawable="@drawable/redcolor" />
</selector>
-
Dark67
- Сообщения: 72
- Зарегистрирован: 23 июл 2012, 23:11
Сообщение
Dark67 » 26 июл 2015, 09:41
[syntax=xml]
<selector xmlns:android="
http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:drawable="@drawable/buttoncolor" />
<item android:state_selected="false" android:drawable="@drawable/redcolor" />
</selector>[/syntax]
Это StateList! Он описывает внешний вид компонента взависимости от состояния (нажато, выбрано и тп). Этим проблему не решить. Я уже написал направление куда копать - в ListView вьюхи переиспользуются (то есть их создается такое количество, чтобы они поместились на экране и далее, при прокрутке списка, будут использоваться те же самые View. Таким образом, при отображении нового элемента списка, нужно восстанавливать начальное состояние вьюхи, которая его отображает).
-
Sasha2dx
- Сообщения: 51
- Зарегистрирован: 10 апр 2015, 23:24
Сообщение
Sasha2dx » 27 июл 2015, 06:31
А, я не правильно понял проблему. По моему, подобное нельзя реализовать используя arrayAdapter. Хотя хз, я его скипнул.
Я бы для этого сделал кастомный адаптер на основе BaseAdapter'a, и ещё где то хранил массив булеанов, с инфой какая запись кликнута а какая нет. Как сделать такой адаптер расказывается то ли в 52 то ли в 54 уроке. Может есть способы и получше, я на истинность не претендую. Если будет не понятно то мб добавлю пример от себя