我有一个GridView适配器的自定义适配器
我想从所选项目中获取特定值,例如"戳记ID"
我正在开发这个版本,很久以前只显示邮票,现在我希望能够点击一个邮票将他发送到下一页
我在互联网上寻找解决方案,但大多数教程要求我在适配器代码上进行大量修改(Witch意味着创建一个新类)
我需要知道是否有一种简单的方法可以使用我正在使用的适配器来解决这个问题。
这是StampActiviy类中连接
的部分GridView gridView = (GridView) findViewById(R.id.gvStamps);
// Pass the results into ListViewAdapter.java adapterCollected,adapterunCollected
adapterListStamps = new ListViewListStampsAdapter(KioskStampsListActivity.this, arraylistStamps);
// Set the adapter to the ListView
gridView.setAdapter(adapterListStamps);
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// I need to get StampId then send the user to next screen
Toast.makeText(KioskStampsListActivity.this, ""+arg2+" - "+stampsUtil.getStampId(), Toast.LENGTH_LONG).show();
}
});
这是ListViewListStampsAdapter
public class ListViewListStampsAdapter extends BaseAdapter {
// Declare Variables
Context context;
LayoutInflater inflater;
ArrayList<HashMap<String, String>> data;
ImageLoader imageLoader;
HashMap<String, String> resultp = new HashMap<String, String>();
public ListViewListStampsAdapter(Context context,
ArrayList<HashMap<String, String>> arraylist) {
this.context = context;
data = arraylist;
imageLoader = new ImageLoader(context);
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
public View getView(final int position, View convertView, ViewGroup parent) {
// Declare Variables
TextView tvStampName, tvStampId;
ImageView stampImage;
String STAMP_IMAGE_URL = SharedPrefUtils.getUrl(context, "images/stamp/");
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemView = inflater.inflate(R.layout.single_stamp_layout, parent, false);
// Get the position
resultp = data.get(position);
tvStampName = (TextView) itemView.findViewById(R.id.tvStampName);
tvStampId = (TextView) itemView.findViewById(R.id.tvStampId);
stampImage = (ImageView) itemView.findViewById(R.id.stampImage);
tvStampName.setText(resultp.get(KioskStampsListActivity.TAG_STAMP_NAME));
tvStampId.setText(resultp.get(KioskStampsListActivity.TAG_STAMPS_ID));
// Passes stampImage images URL into ImageLoader.class
imageLoader.DisplayImage(STAMP_IMAGE_URL+resultp.get(StampsActivity.TAG_STAMP_IMAGE), stampImage);
Animation myFadeInAnimation = AnimationUtils.loadAnimation(context, R.anim.fadein);
stampImage.startAnimation(myFadeInAnimation);
return itemView;
}
}
这是StampUtil类
public class StampsUtil {
private static String StampId, message, stampimage, stampname;
public String getStampId() {
return StampId;
}
public void setStampId(String stampId) {
StampId = stampId;
}
public static String getMessage() {
return message;
}
public static void setMessage(String message) {
StampsUtil.message = message;
}
public static String getStampimage() {
return stampimage;
}
public static void setStampimage(String stampimage) {
StampsUtil.stampimage = stampimage;
}
public static String getStampname() {
return stampname;
}
public static void setStampname(String stampname) {
StampsUtil.stampname = stampname;
}
}
谢谢
答案 0 :(得分:0)
尝试以下代码:
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// I need to get StampId then send the user to next screen
Toast.makeText(KioskStampsListActivity.this, ""+arg2+" - "+stampsUtil.getStampId(), Toast.LENGTH_LONG).show();
System.out.println(arraylistStamps.get(i).getStampId());// you can get value
}
});
答案 1 :(得分:0)
您可以使用
grid.getItemAtPosition(position).toString();
我这样用过: -
public static String getUrl(int position){
String itemName = grid.getItemAtPosition(position).toString();
return itemName;// Return your string value
}
OR
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
String itemName = grid.getItemAtPosition(position).toString();
}});
并在适配器中: -
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return web[position]; //--> web is my array of string
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}