我有一個RecyclerView與某些數據,並且每個recyclerView項目都有一個啓動第二個活動的按鈕。 在第二個活動中,它應該顯示點擊按鈕的特定項目的值。 這裏的問題是,當我從位置0的項目按下按鈕時,我有正確的值,但是當我按下位置1的按鈕時,我從位置0得到值:RecyclerView從最後位置檢索數據
按鈕在位置2 - 從位置顯示值1
在3位上鍵 - 從位置顯示值2
按鈕在位置4 - 從位置3
等顯示值...
釷是是我填充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在幾個方面有所不同,但也許最明顯的區別是它處理視圖的方式。視圖持有人和其中包含的內容有一些警告。一旦它們在等待被渲染的另一行關閉屏幕時,視圖就被重新使用。您可以在調試模式或日誌記錄中監視此。您的'適配器'代碼發佈到 –
。 –