This is how I am trying to do it but I can't achieve it:
package com.test.android;
import android.content.Context;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.ImageView.ScaleType;
public class MyGridView extends BaseAdapter {
private Context mContext;
private int btnPosition = 0;
// references to our images
private Integer[] mThumbIds = {
R.drawable.btn_1, R.drawable.btn_2, R.drawable.btn_3,
R.drawable.btn_4, R.drawable.btn_5, R.drawable.btn_6,
R.drawable.btn_7, R.drawable.btn_8, R.drawable.btn_9,
R.drawable.btn_10, R.drawable.btn_11, R.drawable.btn_12
};
public MyGridView(Context c) {
mContext = c;
}
@Override
public int getCount() {
return mThumbIds.length;
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageButton imageButton;
// if it's not recycled, initialize some attributes
if (convertView == null) {
imageButton = new ImageButton(mContext);
imageButton.setLayoutParams(new GridView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
imageButton.setScaleType(ImageButton.ScaleType.CENTER_CROP);
} else {
imageButton = (ImageButton) convertView;
}
imageButton.setPadding(0, 10, 0, 10);
imageButton.setScaleType(ScaleType.FIT_CENTER);
imageButton.setBackgroundResource(R.drawable.bg_button);
imageButton.setImageResource(mThumbIds[position]);
// Log position
StringBuilder sb = new StringBuilder();
sb.append("Position: ");
sb.append(position);
String strI = sb.toString();
Log.i("INFO POSITION", strI);
btnPosition = position;
imageButton.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View view) {
MainActivity.testButton(btnPosition)
}
}
);
return imageButton;
}
}
It looks like, when clicking each button, I don't get each one's position. Moreover, the log looks like this:
INFO POSITION 0
INFO POSITION 0
INFO POSITION 0
INFO POSITION 1
INFO POSITION 2
INFO POSITION 3
INFO POSITION 4
INFO POSITION 5
INFO POSITION 6
INFO POSITION 7
INFO POSITION 8
INFO POSITION 9
INFO POSITION 10
INFO POSITION 11
Is it what you need? If no please tell more about what do you want.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageButton imageButton;
// if it's not recycled, initialize some attributes
if (convertView == null) {
imageButton = new ImageButton(mContext);
imageButton.setLayoutParams(new GridView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
imageButton.setScaleType(ImageButton.ScaleType.CENTER_CROP);
} else {
imageButton = (ImageButton) convertView;
}
imageButton.setPadding(0, 10, 0, 10);
imageButton.setScaleType(ScaleType.FIT_CENTER);
imageButton.setBackgroundResource(R.drawable.bg_button);
imageButton.setImageResource(mThumbIds[position]);
imageButton.setId(position);
// Log position
StringBuilder sb = new StringBuilder();
sb.append("Position: ");
sb.append(position);
String strI = sb.toString();
Log.i("INFO POSITION", strI);
imageButton.setOnClickListener(
new OnClickListener() {
@Override
public void onClick(View view) {
MainActivity.testButton(view.getId())
}
}
);
return imageButton;
}