2013-07-26 3 views
0

Позвольте мне объяснить мою проблему.GridView прокрутка странный вопрос

Я использую GridView с пользовательским адаптером, и все работает нормально. Как говорится в названии, проблема возникает, когда я быстро прокручиваюсь.

Прокрутка медленно работает отлично, но когда я быстро прокручиваюсь и достигаю конца, у меня есть «отдача» до середины сетки, но эта проблема не возникает, когда я быстро прокручиваю назад назад ,

Я кодирую 2.3.3 с использованием версии 4.2 sdk. Я тестирую 2.3.3 реальный телефон и на эмулятор 4.2, те же результаты.

Спасибо за ваш ответ futur! (Извините за мой бедный письменный английский)

Здесь вы код моего адаптера.

import java.util.ArrayList; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

@SuppressWarnings("unused") 
public class RadioAdapter extends BaseAdapter { 
    private Context context; 
    private final ArrayList<Radio> radios; 
    private LayoutInflater inflater; 

    public RadioAdapter(Context context, ArrayList<Radio> radios) { 
     this.context = context; 
     this.radios = radios; 

     inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 

    @Override 
    public int getCount() { 
     return radios.size(); 
    } 

    @Override 
    public Radio getItem(int position) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     ViewHolder holder; 

     Radio radio = radios.get(position); 

     if (convertView == null) { 

      convertView = inflater.inflate(R.layout.item, null); 

      holder = new ViewHolder();   

      holder.textView = (TextView) convertView.findViewById(R.id.grid_item_label); 
      holder.imageView = (ImageView) convertView.findViewById(R.id.grid_item_cover); 

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

     holder.textView.setText(radio.getName()); 

     holder.imageView.setImageResource(radio.getThumbnail()); 

     return convertView; 
    } 

    public static class ViewHolder { 
     TextView textView; 
     ImageView imageView; 
    } 
} 

EDIT3:

После еще некоторых исследований я нашел это: https://github.com/Prototik/HoloEverywhere/issues/282

Вы используете андроида: overScrollMode = "никогда"? Существует ошибка в реализации скроллер в Gingerbread: http://code.google.com/p/android/issues/detail?id=15860

Так что проблема у меня нормально на Gingerbread, блин.

Я протестировал телефон с 4.0.3, и он работает нормально. Задача решена.

EDIT2:

Я обнаружил, что проблема возникает с

android:overScrollMode="never" 

EDIT:

Здесь ты мой макет:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    tools:context=".MainActivity" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:scaleType="fitStart" 
     android:adjustViewBounds="true" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:src="@drawable/top_bar" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"   
     android:layout_centerHorizontal="true" 
     android:text="@string/app_name" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="@color/White" 
     android:layout_alignLeft="@+id/imageView1" 
     android:layout_alignTop="@+id/imageView1" 
     android:layout_alignRight="@+id/imageView1" 
     android:layout_alignBottom="@+id/imageView1" 
     android:gravity="center" /> 

     <censored.RadioView 
      android:layout_below="@id/imageView1" 
      android:id="@+id/gridView1"  
      android:numColumns="auto_fit" 
      android:columnWidth="100dp" 
      android:stretchMode="spacingWidthUniform" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:listSelector="@drawable/grid_selector" 
      android:drawSelectorOnTop="false" 
      android:overScrollMode="never" 
      android:fadingEdge="none" 
      android:scrollbars="none"> 
     </censored.RadioView> 


</RelativeLayout> 

И го е код моего RadioView

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.util.AttributeSet; 
import android.widget.GridView; 

public class RadioView extends GridView{ 
    private Bitmap background; 

    public RadioView(Context context) { 
     super(context); 
     init(); 
    } 

    public RadioView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public RadioView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    protected void init() { 
     background = BitmapFactory.decodeResource(getResources(), R.drawable.shelfcell_bgr); 
    } 

    @Override 
    protected void dispatchDraw(Canvas canvas) { 
     int top = getChildCount() > 0 ? getChildAt(0).getTop() : 0; 
     for (int y = top; y < getHeight(); y += background.getHeight()){ 
      for (int x = 0; x < getWidth(); x += background.getWidth()){ 
       canvas.drawBitmap(background, x, y, null); 
      } 
     } 
     super.dispatchDraw(canvas); 
    } 
} 
+1

Опубликуйте свой xml-макет для дальнейшего изучения. – Christos

+0

@Christos Я обновил свой вопрос с помощью макета, который я использую, и кода элемента RadioView. – TheTime

ответ

0

После еще некоторых исследований я нашел это: https://github.com/Prototik/HoloEverywhere/issues/282

Вы не используете андроид: overScrollMode = "никогда"? Существует ошибка в реализации скроллер в Gingerbread: http://code.google.com/p/android/issues/detail?id=15860

Так что проблема у меня нормально на Gingerbread, блин.

Я протестировал телефон с 4.0.3, и он работает нормально. Задача решена.

Смежные вопросы