среда, 5 октября 2011 г.

Заметки

Информация: String[] to ArrayList, ArrayList to String[], создание нового адаптора,  управление прозрачностью картинки



Перевод String[] to ArrayList:
String[] words = {"ace""boom""crew""dog""eon"};
Collections.addAll(
myStringArraywords)


Перевод 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, nulltrue);
    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);
}


Комментариев нет:

Отправить комментарий