如何在图像适配器中设置图像资源并在点击监听器上获取该资源
How to set image resource in ImageAdapter and get taht resource on click listner
我想为动态创建的图像设置 id
之类的图像资源或任何名称,但我做不到。这是我的代码:
public class ImageAdapter extends BaseAdapter {
public Context mContext;
public String id ;
public String [] arr;
public String[] mThumbIds;
public ImageAdapter(Context c,String id) {
mContext = c;
this.id = id;
arr = this.id.split(",");
populateArray();
}
public void populateArray(){
mThumbIds = new String[arr.length];
for(int i= 0; i<arr.length; i++){
mThumbIds[i] = "http://www.mysiteurl.com?r=index.php"+arr[i];
}
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
Picasso.with(mContext).load(mThumbIds[position]).into(imageView);
//imageView.setImageResource(Integer.parseInt(mThumbIds[position]));
return imageView;
}
}
我有一个 ID 数组,我将其传入此 class 的构造函数。我想要的是将这些 id 设置为由这段代码创建的我的图像,这样我就可以在这些图像点击侦听器之一上获得该 id。
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
Picasso.with(mContext).load(mThumbIds[position]).into(imageView);
//imageView.setImageResource(Integer.parseInt(mThumbIds[position]));
return imageView;
}
这是我调用 ImageAdapter
class 并设置图像点击侦听器的片段。
GridView gridview = (GridView) view.findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(getActivity(),id));
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
ChartPageFragment.fromSearch = true;
ChartPageFragment newFragment = new ChartPageFragment();
Bundle args = new Bundle();
//String arr=v.getTag();
args.putString("id","34778");
newFragment.setArguments(args);
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(newFragment.getClass().getName());
// Commit the transaction
transaction.commit();
}
});
我不知道该怎么做。
提前致谢
使用您在适配器中使用的相同逻辑。拆分字符串 id
并使用 GridView
的 onItemClick
中的 position
参数获取相应的 id。
试试这个,
private String getClickedItemId(int position){
// id is the variable containing all your ids
String [] arr = id.split(",");
if(position < arr.length)
return arr[poistion];
else
return null;
}
按如下方式在您的 onItemClick
中调用此函数。
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
ChartPageFragment.fromSearch = true;
ChartPageFragment newFragment = new ChartPageFragment();
Bundle args = new Bundle();
args.putString("id", getClickedItemId(position));
newFragment.setArguments(args);
...
}
我想为动态创建的图像设置 id
之类的图像资源或任何名称,但我做不到。这是我的代码:
public class ImageAdapter extends BaseAdapter {
public Context mContext;
public String id ;
public String [] arr;
public String[] mThumbIds;
public ImageAdapter(Context c,String id) {
mContext = c;
this.id = id;
arr = this.id.split(",");
populateArray();
}
public void populateArray(){
mThumbIds = new String[arr.length];
for(int i= 0; i<arr.length; i++){
mThumbIds[i] = "http://www.mysiteurl.com?r=index.php"+arr[i];
}
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
Picasso.with(mContext).load(mThumbIds[position]).into(imageView);
//imageView.setImageResource(Integer.parseInt(mThumbIds[position]));
return imageView;
}
}
我有一个 ID 数组,我将其传入此 class 的构造函数。我想要的是将这些 id 设置为由这段代码创建的我的图像,这样我就可以在这些图像点击侦听器之一上获得该 id。
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
Picasso.with(mContext).load(mThumbIds[position]).into(imageView);
//imageView.setImageResource(Integer.parseInt(mThumbIds[position]));
return imageView;
}
这是我调用 ImageAdapter
class 并设置图像点击侦听器的片段。
GridView gridview = (GridView) view.findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(getActivity(),id));
gridview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
ChartPageFragment.fromSearch = true;
ChartPageFragment newFragment = new ChartPageFragment();
Bundle args = new Bundle();
//String arr=v.getTag();
args.putString("id","34778");
newFragment.setArguments(args);
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
// Replace whatever is in the fragment_container view with this fragment,
// and add the transaction to the back stack so the user can navigate back
transaction.replace(R.id.fragment_container, newFragment);
transaction.addToBackStack(newFragment.getClass().getName());
// Commit the transaction
transaction.commit();
}
});
我不知道该怎么做。 提前致谢
使用您在适配器中使用的相同逻辑。拆分字符串 id
并使用 GridView
的 onItemClick
中的 position
参数获取相应的 id。
试试这个,
private String getClickedItemId(int position){
// id is the variable containing all your ids
String [] arr = id.split(",");
if(position < arr.length)
return arr[poistion];
else
return null;
}
按如下方式在您的 onItemClick
中调用此函数。
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
ChartPageFragment.fromSearch = true;
ChartPageFragment newFragment = new ChartPageFragment();
Bundle args = new Bundle();
args.putString("id", getClickedItemId(position));
newFragment.setArguments(args);
...
}