Android 为什么适配器总是将最后一项数据发送到另一个活动?
这是我的适配器类onBindViewHolder方法: 但是,每次意图是将数据发送到另一个活动,即本例中的WebViewActivity,则列表中的最后一项始终是send,而不是当前数据!广告结束时,情况总是如此 这是向WebviewActivity发送数据的代码,您也可以在代码中看到: detailModel.getClick只是我从数据库收到的链接 如何解决此问题,以便发送当前项目数据而不是最后一个项目数据。请引导 由于屏幕上的所有位置都将调用always onBindViewHolder,并且您单击的位置不会调用它,因此最后一项将传递给WebViewActivity 请尝试以下方法:Android 为什么适配器总是将最后一项数据发送到另一个活动?,android,android-recyclerview,Android,Android Recyclerview,这是我的适配器类onBindViewHolder方法: 但是,每次意图是将数据发送到另一个活动,即本例中的WebViewActivity,则列表中的最后一项始终是send,而不是当前数据!广告结束时,情况总是如此 这是向WebviewActivity发送数据的代码,您也可以在代码中看到: detailModel.getClick只是我从数据库收到的链接 如何解决此问题,以便发送当前项目数据而不是最后一个项目数据。请引导 由于屏幕上的所有位置都将调用always onBindViewHolder,
holder.homeCards.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Intent intent = new Intent(mCtx, WebViewActivity.class);
intent.putExtra("Web", detailModelList.get(getAdapterPosition).getClick());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mCtx.startActivity(intent);
}
}
});
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
// Load the next interstitial.
Intent intent = new Intent(mCtx, WebViewActivity.class);
intent.putExtra("Web", String.valueOf(detailModelList.get(getAdapterPosition).getClick()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mCtx.startActivity(intent);
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
});
由于屏幕上的所有位置都将调用always onBindViewHolder,并且您单击的位置不会调用它,因此最后一项将传递给WebViewActivity
请尝试以下方法:
holder.homeCards.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Intent intent = new Intent(mCtx, WebViewActivity.class);
intent.putExtra("Web", detailModelList.get(getAdapterPosition).getClick());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mCtx.startActivity(intent);
}
}
});
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
// Load the next interstitial.
Intent intent = new Intent(mCtx, WebViewActivity.class);
intent.putExtra("Web", String.valueOf(detailModelList.get(getAdapterPosition).getClick()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mCtx.startActivity(intent);
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
});
什么是detailModel.getClick;它只是从DatabaseIm收到的链接,有相同的问题,最后一项始终是发送,而不是当前位置项。不知道为什么@Sainita你试过打印currPos值吗?是否正确?是的,我在Logcat中打印,它接收值,但始终是列表中的最后一项。不管我点击哪个cardView,什么是detailModel.getClick;它只是从DatabaseIm收到的链接,有相同的问题,最后一项始终是发送,而不是当前位置项。不知道为什么@Sainita你试过打印currPos值吗?是否正确?是的,我在Logcat中打印,它接收值,但始终是列表中的最后一项。不管我单击哪个cardView抱歉,您的回答只会将当前适配器位置发送到另一个活动。但是,如果您在上面的代码中看到,它发送的是来自列表的实际数据,而不是当前数据position@Sainita正如我看到的,您只发送link detailModel.getClick。您能告诉我您将实际数据发送到哪里吗?@Sainita我已经更新了答案,请检查一下,对不起,您的答案只是将当前适配器位置发送到另一个活动。但是,如果您在上面的代码中看到,它发送的是来自列表的实际数据,而不是当前数据position@Sainita正如我看到的,您只发送link detailModel.getClick。你能告诉我你在哪里发送实际数据吗?@Sainita我已经更新了答案,请检查一下
holder.homeCards.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Intent intent = new Intent(mCtx, WebViewActivity.class);
intent.putExtra("Web", detailModelList.get(getAdapterPosition).getClick());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mCtx.startActivity(intent);
}
}
});
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdClosed() {
// Load the next interstitial.
Intent intent = new Intent(mCtx, WebViewActivity.class);
intent.putExtra("Web", String.valueOf(detailModelList.get(getAdapterPosition).getClick()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mCtx.startActivity(intent);
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
});