Hi,everyone.

I am new to android.

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

for example
when I touched (2,2),I should get (2,2)  but I got item of (3,2) .

Please check my source code as following,any idea is welcome.


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