Ich kann alle Elemente in der App wie erforderlich anzeigen, aber während OnClick-Methode, um den App-Inhalt auf Facebook zu teilen, zeigt es die falschen Elemente in Bezug auf das Element geklickt. Ich bekomme das Bild, die Überschrift und andere ähnliche Dinge, aber die falsche Adapterposition wird angezeigt. z.B. Wenn ich auf die dritte Position klicke, wird das Ergebnis des vierten Artikels in der Recycleransicht angezeigt. Kann mich irgendjemand durch das führen, was ich hier falsch mache?Recyclerview liefert falsche Position auf onClick-Methode
Unten ist mein Adapter Code:
private LayoutInflater inflater;
Context context;
Uri uri;
String str_uri;
List<Data> dataArray;
private int lastPosition = -1;
public RecyclerViewAdapter(Context context) {
//this.dataArray = dataArray;
this.context = context;
inflater = LayoutInflater.from(context);
}
public void setDataArray(List<Data> dataArray) {
this.dataArray = dataArray;
}
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview, null);
View view = inflater.inflate(R.layout.cardview, parent, false);
CustomViewHolder holder = new CustomViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
Data current = dataArray.get(position);
holder.textView1.setText(current.heading);
holder.textView2.setText(current.date);
holder.textView3.setText(current.brief);
// Using picasso to fetch image as the user scrolls down ... No need to store
// all the images during start up.
uri = Uri.parse(current.getLImage());
if (current.getLlImage() == null || current.getLlImage().equalsIgnoreCase("null")) {
Picasso.with(this.context).cancelRequest(holder.image);
holder.image.setVisibility(View.GONE);
HomeActivity.setParameters(current.heading, current.date, current.brief, uri);
setAnimation(holder.relativeLayout, position);
} else {
Picasso.with(context).load(uri).into(holder.image);
HomeActivity.setParameters(current.heading, current.date, current.brief, uri);
// Animation
setAnimation(holder.relativeLayout, position);
}
}
@Override
public int getItemCount() {
return dataArray.size();
}
public class CustomViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ImageView image, facebook_Sharing;
RelativeLayout relativeLayout;
TextView textView1, textView2, textView3;
public CustomViewHolder(View itemView) {
super(itemView);
textView1 = (TextView) itemView.findViewById(R.id.heading);
textView2 = (TextView) itemView.findViewById(R.id.date);
textView3 = (TextView) itemView.findViewById(R.id.brief);
image = (ImageView) itemView.findViewById(R.id.imageView);
facebook_Sharing = (ImageView) itemView.findViewById(R.id.facebook_Sharing);
facebook_Sharing.setOnClickListener(this);
relativeLayout = (RelativeLayout) itemView.findViewById(R.id.Relative);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(context.getApplicationContext(), HomeActivity.class);
intent.putExtra("adapterPosition", getAdapterPosition());
context.startActivity(intent);
}
}
private void setAnimation(View viewToAnimate, int position) {
// If the bound view wasn't previously displayed on screen, it's animated
if (position > lastPosition || position < lastPosition) {
Animation animation = AnimationUtils.loadAnimation(context, android.R.anim.slide_in_left);
viewToAnimate.startAnimation(animation);
lastPosition = position;
}
}
Unten ist der Code Aktivität Facebook:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(getApplicationContext());
setContentView(R.layout.home);
share = (Button) findViewById(R.id.share);
callbackManager = CallbackManager.Factory.create();
facebookLogin = (LoginButton) findViewById(R.id.login_button);
facebookLogin.registerCallback(callbackManager, callback);
shareDialog = new ShareDialog(this);
// login.setReadPermissions("public_profile email");
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ShareLinkContent content = new ShareLinkContent.Builder()
.setContentTitle(heading1)
.setContentDescription(brief1)
.setContentUrl(Uri.parse(String.valueOf(imageView1))).build();
shareDialog.show(content);
}
});
}
public static void setParameters(String heading, String date, String brief, Uri imageView) {
heading1 = heading;
date1 = date;
brief1 = brief;
System.out.println("BBBBBBBBBBBBBBBBBBBB is ::::::::: " + brief1);
imageView1 = imageView;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
meinen Code versuchen, mit Position zu Ihrer Ansicht verwendet tag:
Und innerhalb Facebook Aktivität onClick Hörer sollte dataarray direcly wie zugegriffen werden. – appukrb