我有一个包含某些数据的 RecyclerView,每个 recyclerView 项目都有一个启动第二个 Activity 的按钮。 在第二个 Activity 中,它应该显示单击按钮的特定项目的值。 这里的问题是,当我按下位置 0 中的项目按钮时,我得到了正确的值,但是当我按下位置 1 中的按钮时,我得到了位置 0 中的值:
位置 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);
}
}
我不知道我做错了什么,如果您需要更多代码,请随时询问。 谢谢您并致以问候!
最佳答案
替换
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();
与
String latitude_details = model.getLatitude():
String longitude_details = model.getLongitude();
关于java - RecyclerView 从最后位置检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41156006/