java - RecyclerView 从最后位置检索数据

标签 java android android-activity android-recyclerview

我有一个包含某些数据的 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/

相关文章:

android - 使用 nineoldandroids 库时动画 setInterpolator() 不工作

android - 从 AsyncTask 开始另一个 Activity

android-activity - 具有 Activity 堆栈的全局应用程序类

java - 使用java计算体积和表面积

java - 如何检查java编译查询中的小于条件?

android - Android系统服务如何提供RPC接口(interface)?

适用于不同屏幕分辨率但尺寸相同的平板电脑的 Android 布局

Android内存泄漏,没有静态变量

java - 将文本从 EditText 转换为整数值错误

java - Word Scramble 游戏不会将用户猜测与原始单词进行比较,Java