I implemented a gridview with 7 rows and 3 columns(7,3).
 I am trying to get an item in gridview on touch. (want to get an
touched item not clicked item)
I can get an item but it is not the one I want.


Example: When I touched (2,2), I should get the item in (2,2).
Instead, I got the item in (3,2).

Please check my source code as following:

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

public class GridviewflickActivity extends Activity implements
OnGestureListener {

private GridView gv;
private GestureDetector gestureDetecotr;
private GestureDetector.OnGestureListener gl;
private ImageView imageview;
private int dragposition;
    private ImageAdapter ia;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    gv=(GridView)findViewById(R.id.drag_grid);
    ia=new ImageAdapter(this);
    gv.setAdapter(ia);
    gestureDetecotr = new GestureDetector(this);

}

public boolean dispatchTouchEvent(MotionEvent ev) {
    System.out.println("dispatchTouchEvent");
 return     gestureDetecotr.onTouchEvent(ev);

}

public class ImageAdapter extends BaseAdapter{
    private Context mContext;

    public ImageAdapter(Context c){
     mContext = c;
    }

    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return mThumbIds[position];
    }

    public long getItemId(int position) {
        return position;
    }

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

        ImageView imageView1;
        if (convertView == null) {
            imageView1 = new ImageView(mContext);
            imageView1.setLayoutParams(new GridView.LayoutParams(85,
85));
            imageView1.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView1.setPadding(8, 8, 8, 8);
        } else {
            imageView1 = (ImageView) convertView;
        }

        imageView1.setImageResource(mThumbIds[position]);
        return imageView1;

}


private Integer[] mThumbIds = {
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7,
        R.drawable.sample_0, R.drawable.sample_1,
        R.drawable.sample_2, R.drawable.sample_3,
        R.drawable.sample_4, R.drawable.sample_5,
        R.drawable.sample_6, R.drawable.sample_7
};
}



@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float
velocityX,
        float velocityY) {
System.out.println("onFling");

    int x=(int)e1.getX();
    int y=(int)e1.getY();
    dragposition=gv.pointToPosition(x, y);
    if (dragposition==gv.INVALID_POSITION){
        return false;
    }

    int cnt=gv.getChildCount();
    int fvp=gv.getFirstVisiblePosition();
    imageview=(ImageView)gv.getChildAt(dragposition-fvp);
    System.out.println("X: "+ x +" Y: " + y +" dragposition:
"+dragposition+" fvp: " +fvp);

................
................

return true;
}

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to