我已经从HomeFragment卡中设置了意图,请单击以重定向到“第二活动”。另外,我正在从recyclerView适配器发送当前位置的数据库ID。
但是在第二活动中,仅正确接收了第一项和最后一项ID。如果我单击第3个职位项目,则其他职位的ID将发送到Second Activity。
这是我的代码:
public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.ViewHolder> {
Context context;
List<HomeModel> homeModelList;
DatabaseReference databaseReference;
List<String> keysList;
String keyID;
public HomeAdapter(Context context, List<HomeModel> homeModelList) {
this.context = context;
this.homeModelList = homeModelList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.layout_news, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
final HomeModel homeModel = homeModelList.get(position);
holder.timesAgo.setText(homeModel.getTimesAgo().trim());
holder.newsTitleTextView.setText(homeModel.getNewsTitle().trim());
holder.newsDetailTextView.setText(homeModel.getNewsDetail().trim());
Log.e("View counts ", String.valueOf(homeModel.getViewCounts()));
holder.view_counter.setText(String.valueOf(homeModel.getViewCounts()));
Glide.with(context).load(homeModel.getNewsImage()).centerCrop().into(holder.newsThumbnailImageView);//set error and placeholder
databaseReference = FirebaseDatabase.getInstance().getReference("News");
// final String z = databaseReference.child(String.valueOf(homeModelList.get(position))).getKey();
// Toast.makeText(context, z, Toast.LENGTH_SHORT).show();
keysList = new ArrayList<>();
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
Log.e("Position is ", String.valueOf(childSnapshot.getKey()));
keysList.add(childSnapshot.getKey());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String pos = keysList.get(holder.getAdapterPosition());
Log.e("current Position is", pos);
Toast.makeText(context, keysList.get(position), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, DetailNews.class);
intent.putExtra("currentPosition", pos);
context.startActivity(intent);
}
});
如何解决此问题?请引导我。
更改以下代码:
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
Log.e("Position is ", String.valueOf(childSnapshot.getKey()));
keysList.add(childSnapshot.getKey());
}
holder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String pos = keysList.get(holder.getAdapterPosition());
Log.e("current Position is", pos);
Toast.makeText(context, keysList.get(position),
Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, DetailNews.class);
intent.putExtra("currentPosition", pos);
context.startActivity(intent);
}
});
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});