私はRecyclerViewに特定のデータを持ち、各recyclerViewアイテムには2番目のアクティビティを開始するボタンがあります。 2番目のアクティビティでは、ボタンがクリックされた特定のアイテムの値が表示されます。 ここでの問題は、位置0の項目のボタンを押したときに正しい値が得られるが、位置1のボタンを押すと、位置0の値が得られるということです。RecyclerViewは最後の位置からデータを取得します
ボタン2 - 4位の位置2から表示値が
ボタン - - 表示位置から値3
など...
番目3の位置1
ボタンから表示値
public class DetailsActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
Intent intent=getIntent();
String mLatitude = intent.getStringExtra(MainActivity.EXTRA_LATITUDE);
String mLongitude = intent.getStringExtra(MainActivity.EXTRA_LONGITUDE);
TextView latitude = (TextView) findViewById(R.id.latitude_detail);
TextView longitude = (TextView) findViewById(R.id.longitude_detail);
latitude.setText(mLatitude);
longitude.setText(mLongitude);
}
}
私は私が間違ってやっているのか分からない:
protected void populateViewHolder(PicturesHolder viewHolder, Pictures model, final int position) {
viewHolder.setImage(model.getDownloadURL());
viewHolder.setLatitude(model.getLatitude());
viewHolder.setLongitude(model.getLongitude());
viewHolder.setDateView(model.getDate());
viewHolder.imageButtonView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Toast.makeText(view.getContext(), "Launching second activity", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(view.getContext(),DetailsActivity.class);
TextView latitude = (TextView) findViewById(R.id.latitude);
TextView longitude = (TextView) findViewById(R.id.longitude);
String latitude_details = latitude.getText().toString();
String longitude_details = longitude.getText().toString();
intent.putExtra(EXTRA_LATITUDE,latitude_details);
intent.putExtra(EXTRA_LONGITUDE,longitude_details);
startActivity(intent);
}
});
}
これは、データが表示されSecondActivityがある:私はViewHolderを(移入法)とonClickイベントです、あなたがより多くのコードを必要とするならば、尋ねるのをためらうことはありません。 ありがとうございました!
RecyclerViewはいくつかの点でListViewと異なりますが、もっとも明らかな違いは、ビューを扱う方法です。ビュー所有者とその中に含まれるコンテンツには警告があります。ビューはレンダリングされるのを待っている別の行によってスクリーンから離れたらすぐに再利用されます。これはデバッグモードまたはロギングで監視できます。 –
あなたの 'アダプタ'コードを投稿してください。 –