getView метод вызова Listview несколько раз

Метод getView в адаптере вызова списка несколько раз вызывается в позиции 0
Так что требуется больше времени, чтобы загрузить эту деятельность
и также установить Bitamp Каждый раз в Imageview, когда вызывается getView

я также пытаюсь установить высоту представления списка как fillparent, но не решить мою проблему

ListView в XML-файле

      <RelativeLayout android:layout_width="match_parent"
                      android:layout_height="wrap_content" >
       <ListView  android:id="@+id/lv_order_list"
                        android:layout_width="match_parent"
                        android:layout_height="fill_parent"
                        android:divider="@android:color/transparent"
                        android:dividerHeight="0dp"
                        android:listSelector="@android:color/transparent" >
                    </ListView> 
   </RelativeLayout>

метод getView в Listview

@Override
        public View getView(final int position, View convertView,
                ViewGroup parent) {
            myView = convertView;
            System.out.println("get view" + position);
            LayoutInflater inflater = ((Activity) context).getLayoutInflater();
            myView = inflater.inflate(layoutResourceId, parent, false);

            ImageView img_order = (ImageView) myView
                    .findViewById(R.id.img_order);
            TextView title_of_ink = (TextView) myView
                    .findViewById(R.id.title_of_ink);
             title_of_ink.setText("Text");
            picasso.load("url").noFade().into(img_order);
            return myView;
        }

1 ответ

getView будет вызываться несколько раз во время прокрутки, это как ListView работает.

Для повышения производительности вы можете использовать два метода:
1) Просмотр утилизации - что вы делаете НЕПРАВИЛЬНО

public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.your_layout, null);
    }

    TextView text = (TextView) convertView.findViewById(R.id.text);
    text.setText("Position " + position);

    return convertView;
}

2) Используйте шаблон ViewHolder

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.your_layout, null);

        holder = new ViewHolder();
        holder.text = (TextView) convertView.findViewById(R.id.text);

        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    holder.text.setText("Position " + position);

    return convertView;
}

private static class ViewHolder {
    public TextView text;
}

3) Асинхронная загрузка изображений с прописной буквой P, и вам не хватает Context аргумент

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

Код заимствован у lucasr.org.

Другие вопросы по тегам