У меня есть RecyclerView с определенными данными, и каждый элемент recyclerView имеет кнопку, которая запускает второе действие. Во втором действии он должен отображать значения из определенного элемента, с которого нажата кнопка. Проблема заключается в том, что когда я нажимаю кнопку из позиции в позиции 0, у меня есть правильные значения, но когда я нажимаю кнопку в позиции 1, я получаю значения из положения 0:RecyclerView извлекает данные из последней позиции
кнопка в положении 2 - отображаются значения из позиции 1
кнопку в положении 3 - отображает значения из позиции 2
кнопку в положении 4 - отображает значения из позиции 3
и так далее ...
Th это является метод, где я заселить ViewHolder() и событие OnClick:
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, где отображаются данные:
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);
}
}
Я не знаю, что я делаю неправильно , если вам нужно больше кода, не стесняйтесь спрашивать. Спасибо и приветствую!
RecyclerView отличается от ListViews несколькими способами, но, возможно, наиболее очевидным отличием является то, как он имеет дело с представлениями. Есть предостережения с держателями обзора и содержанием, содержащимся внутри. Представления повторно используются, как только они выходят из экрана другой строкой, ожидающей рендеринга. Вы можете отслеживать это в режиме отладки или при регистрации. –
напишите свой код «Адаптер». –