Ich möchte Bildquelle wie id
oder irgendeinen Namen zum Bild setzen, die dynamisch erzeugt werden, aber ich bin nicht in der Lage, das zu tun. Hier ist mein Code:Wie man Bildressource in ImageAdapter einstellt und die Ressource auf Klicklistener bekommt
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;
}
}
Ich habe ein Array von IDs, die ich in Konstruktor dieser Klasse übergeben. Ich möchte diese IDs auf meine Bilder setzen, die von diesem Code erzeugt werden, damit ich diese ID auf einen dieser Bild-Klick-Listener bekommen kann.
// 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;
}
Hier ist mein Fragment aus dem ich die ImageAdapter
Klasse bin Aufruf und den Klick-Listener der Bilder einstellen.
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();
}
});
Ich bin auf dieser Idee fest, wie man das macht. Vielen Dank im Voraus
Danke Kumpel ... es funktioniert .... –