Информация: String[] to ArrayList, ArrayList to String[], создание нового адаптора, управление прозрачностью картинки
Перевод String[] to ArrayList:
String[] words = {"ace", "boom", "crew", "dog", "eon"};
Collections.addAll(myStringArray, words);
Перевод ArrayList to String[]:
ArrayList<String> arrayList = new ArrayList<String>();
String[] stringArray = (String[]) arrayList.toArray();
Болванка для создания нового адаптора:
public class MainMessageAdapter extends BaseAdapter {
private final int COUNT = 2;
private LayoutInflater _layoutInflater;
public MainMessageAdapter(Context context) {
_layoutInflater = LayoutInflater.from(context);
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) convertView = _layoutInflater.inflate(R.layout.main_home_item, null, true);
return convertView;
}
public int getCount() {
return COUNT;
}
}
- метод getCount() вызывается при каждом вызове getView, по этому желательно чтобы во время перерисовки он не менялся.
- при рисовании ListView задействована схема оптимизации из-за чего каждый item отображенный на экране не является отдельным обьектом. По этому надо учитывать что состояние обьекта convertView на входе метода может быть отлично от того что прописано в xml файле.
Пример: допустим нужно чтобы было заполнено 2 item-а информацией, а 3-й - нет.
блок кода в методе getView:
if (position == 0) //делаем что-то
else if (position == 1) // делаем что-то
else //ничего не делаем ошибка: item будет не обязательно пустым. Скорее всего он будет заполнен также как 1 еделемент или 2.
Управление прозрачностью картинки:
Drawable star = context.getResources().getDrawable(R.drawable.star);
if (book.isFavorite()) {
star.mutate().setAlpha(255);
} else {
star. mutate().setAlpha(70);
}
Перевод String[] to ArrayList:
String[] words = {"ace", "boom", "crew", "dog", "eon"};
Collections.addAll(myStringArray, words);
Перевод ArrayList to String[]:
ArrayList<String> arrayList = new ArrayList<String>();
String[] stringArray = (String[]) arrayList.toArray();
Болванка для создания нового адаптора:
public class MainMessageAdapter extends BaseAdapter {
private final int COUNT = 2;
private LayoutInflater _layoutInflater;
public MainMessageAdapter(Context context) {
_layoutInflater = LayoutInflater.from(context);
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) convertView = _layoutInflater.inflate(R.layout.main_home_item, null, true);
return convertView;
}
public int getCount() {
return COUNT;
}
}
- метод getCount() вызывается при каждом вызове getView, по этому желательно чтобы во время перерисовки он не менялся.
- при рисовании ListView задействована схема оптимизации из-за чего каждый item отображенный на экране не является отдельным обьектом. По этому надо учитывать что состояние обьекта convertView на входе метода может быть отлично от того что прописано в xml файле.
Пример: допустим нужно чтобы было заполнено 2 item-а информацией, а 3-й - нет.
блок кода в методе getView:
if (position == 0) //делаем что-то
else if (position == 1) // делаем что-то
else //ничего не делаем ошибка: item будет не обязательно пустым. Скорее всего он будет заполнен также как 1 еделемент или 2.
Управление прозрачностью картинки:
Drawable star = context.getResources().getDrawable(R.drawable.star);
if (book.isFavorite()) {
star.mutate().setAlpha(255);
} else {
star. mutate().setAlpha(70);
}
Комментариев нет:
Отправить комментарий