I am trying to create a gridView of scrollable images for my android
app.Each Grid consist of imageView. When one clicks on the image, then it
blurs the image and present Play & share options.I am using the
ArrayAdapter with holder pattern to set the view.
**Problem Statement:-**
I am handling click event on BlurLayout in the Adapter. On click i play the
video related to image in youtube player. The problem is that in getView of
ArrayAdapter, value of position is coming incorrectly. Thus it plays a
wrong video. My observation is that position value is correct for 0-2 and
it repeats.
Code Snippet:-
public class TrendingAdapter extends ArrayAdapter<TrendingData> {
private AdapterCallback mAdapterCallback;
final private DbHandler db;
public TrendingAdapter(Context context, int resource,
AdapterCallback callback) {
super(context, resource);
this.mAdapterCallback = callback;
this.db = new DbHandler(getContext());
}
//hover image
private BlurLayout mSampleLayout ;
@Override
public View getView(final int position, View convertView, final
ViewGroup parent) {
final ViewHolder holder;
if( convertView == null ) {
holder = new ViewHolder();
convertView = LayoutInflater.from( getContext()
).inflate( R.layout.activity_trending_adapter, parent, false );
holder.image = (ImageView) convertView.findViewById(
R.id.image );
holder.caption=(TextView)
convertView.findViewById(R.id.textView);
convertView.setTag(holder);
BlurLayout.setGlobalDefaultDuration(450);
mSampleLayout =
(BlurLayout)convertView.findViewById(R.id.blur_layout);
final View hover =
LayoutInflater.from(getContext()).inflate(R.layout.hover_sample, null);
holder.play = (ImageView)hover.findViewById(R.id.heart);
holder.playList =
(ImageView)hover.findViewById(R.id.share);
hover.findViewById(R.id.play).setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
YoYo.with(Techniques.Tada)
.duration(550)
.playOn(v);
mAdapterCallback.onMethodCallback(getItem(position).getImage(),
getItem(position).getCaption(),getItem(position).getBgImage());
}
});
hover.findViewById(R.id.playlist).setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
YoYo.with(Techniques.Swing)
.duration(550)
.playOn(v);
String date = new
SimpleDateFormat("dd-MM-yy").format(new Date());
db.addContact(new PlayListData(getItem(position).getThumbnail(),
getItem(position).getCaption(),date,getItem(position).getImage()));
}
});
mSampleLayout.setHoverView(hover);
mSampleLayout.setBlurDuration(550);
mSampleLayout.addChildAppearAnimator(hover, R.id.heart,
Techniques.FlipInX, 550, 0);
mSampleLayout.addChildAppearAnimator(hover, R.id.share,
Techniques.FlipInX, 550, 250);
mSampleLayout.addChildAppearAnimator(hover, R.id.more,
Techniques.FlipInX, 550, 500);
mSampleLayout.addChildDisappearAnimator(hover,
R.id.heart, Techniques.FlipOutX, 550, 500);
mSampleLayout.addChildDisappearAnimator(hover,
R.id.share, Techniques.FlipOutX, 550, 250);
mSampleLayout.addChildDisappearAnimator(hover,
R.id.more, Techniques.FlipOutX, 550, 0);
mSampleLayout.addChildAppearAnimator(hover,
R.id.description, Techniques.FadeInUp);
mSampleLayout.addChildDisappearAnimator(hover,
R.id.description, Techniques.FadeOutDown);
} else {
holder = (ViewHolder) convertView.getTag();
}
final ViewHolder tmp = holder;
Picasso.with(getContext()).load(getItem(position).getThumbnail())
.placeholder(getContext().getResources().getDrawable(R.drawable.place)).
error(getContext().getResources().getDrawable(R.drawable.place)).
into(holder.image);
return convertView;
}
private class ViewHolder {
ImageView image;
TextView caption;
ImageView play;
ImageView playList;
}
}
The Value of position is incorrect in:-
mAdapterCallback.onMethodCallback(getItem(position).getImage(),
getItem(position).getCaption(),getItem(position).getBgImage());
db.addContact(new PlayListData(getItem(position).getThumbnail(),
getItem(position).getCaption(),date,getItem(position).getImage()));
I don't how to get the correct value of position so that i can play the
correct video against image (Play button in BlurLayout) on which the click
event happens.
Please help to resolve the problem.
Adding TrendingData Class**
public class TrendingData {
private String thumbnail;
private String image;
private String caption;
private String bg_image;
public TrendingData() {
}
public TrendingData( String thumbnail, String image, String
caption, String bg_image ) {
//this.thumbnail = thumbnail;
this.thumbnail = bg_image;
this.image = image;
this.caption = caption;
this.bg_image = bg_image;
}
public String getThumbnail() {
return thumbnail;
}
public void setThumbnail(String thumbnail) {
this.thumbnail = thumbnail;
}
public String getImage() {
return image;
}
public String getBgImage() {
return bg_image;
}
public void setImage(String image) {
this.image = image;
}
public void setBgImage(String bg_image) {
this.bg_image = bg_image;
}
public String getCaption() {
return caption;
}
public void setCaption(String caption) {
this.caption = caption;
}
}
--
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
---
You received this message because you are subscribed to the Google Groups
"Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.