Цвет списка альтернативного просмотра Android, НО с выбором курсора по умолчанию
Я был по всей сети, включая стекопоток, и просто не могу получить ясный полный способ
Я хочу создать ListView, который
1) имеет чередующиеся цвета (я могу сделать это с кодом ниже) 2) сохраняет оранжевое поведение выбора по умолчанию для Android
для достижения #1 у меня есть пользовательский адаптер, который расширяет ArrayAdapter, а затем я переопределить getView, как так
public View getView(int position, View convertView, ViewGroup parent)
{
....
// tableLayoutId is id pointing to each view/row in my list
View tableLayoutView = view.findViewById(R.id.tableLayoutId);
if(tableLayoutView != null)
{
int colorPos = position % colors.length;
tableLayoutView.setBackgroundColor(colors[colorPos]);
}
}
моя переменная-член для цветов
private int[] colors = new int[] { 0x30ffffff, 0x30ff2020, 0x30808080 };
следуя статье "Android - Применение цвета альтернативных строк в ListView с SimpleAdapter", найденной здесь
Теперь я застрял в стеке и заметил некоторые упоминания о том, как это сделать, как это обычно бывает, и они предлагают добавить этот атрибут к
андроид:listSelector="@ цвет /list_item"
где list_item.xml будет что-то вроде
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/transparent" />
.....
</selector>
Затем я должен был бы добавить код в getView(), чтобы выяснить, в каком состоянии я нахожусь, и действовать соответственно.
Есть ли пример, как заставить это работать? Спасибо всем, что я с удовольствием выложу для всех, если смогу заставить его работать.:-(
1 ответ
Обходной путь должен использовать 2 селектора. От вашего адаптера, вместо того, чтобы устанавливать 2 цвета, вы устанавливаете 2 селектора.
if (position % 2 == 0) {
view.setBackgroundResource(R.drawable.selector_1);
} else {
view.setBackgroundResource(R.drawable.selector_2);
}
selector_1 определяется в selector_1.xml следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false" android:drawable="@color/white" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/orange" />
</selector>
selector_2 определяется в selector_2.xml следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="false" android:state_pressed="false" android:drawable="@color/violet" />
<item android:state_pressed="true" android:drawable="@color/orange" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/orange" />
</selector>
Таким образом, у вас есть двухцветный список и третий цвет / форма / все, что вы хотите для выбранного элемента.