我有一个不同文章的回收器视图,我可以得到这个回收器视图项的位置,但是我仍然不知道如何使用那个位置在一个整页/另一个活动中打开文章。
以下是我如何获得这个职位的:
recyclerview.addOnItemTouchListener(new RecyclerItemClickListener(this, recyclerview, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(Navigation.this, "" + position, Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongClick(View view, int position) {
Toast.makeText(Navigation.this, "Position " + position, Toast.LENGTH_SHORT).show(); }
}));
我想实现的是,当用户单击任何文章时,他们会被重定向到一个新的片段或活动,在那里他们可以完整地查看回收者。.问候
尝试像这样使用Intent启动一个新活动,并将位置作为参数传递给意图,而不是在您的详细活动中根据该位置获取结果
recyclerview.addOnItemTouchListener(new RecyclerItemClickListener(this, recyclerview, new RecyclerItemClickListener.OnItemClickListener() { @Override
public void onItemClick(View view, int position) {
Intent i = new Intent(SignupActivity.this,LoginActivity.class);
i.putExtra("email",list.get(position).getEmail());
i.putExtra("address",list.get(position).getAddress());
i.putExtra("image",list.get(position).getImageurl());
startActivity(i);
}
@Override
public void onItemLongClick(View view, int position) {
Toast.makeText(Navigation.this, "Position " + position, Toast.LENGTH_SHORT).show(); }
}));
如果您使用数组作为数据适配器的输入,那么您可以访问onItemClick和onItemLongClick内部位置的数据
String yourArray[];
//putting your data
youArray = new String[]{"Item1","Item2","Item3"};
recyclerview.addOnItemTouchListener(new RecyclerItemClickListener(this, recyclerview, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Toast.makeText(Navigation.this, "" + position, Toast.LENGTH_SHORT).show();
String yourDesiredData = youArray[position];
//now you can fire intent with that data or start fragment transaction passing the data
if(yourDesiredData!=null){
Intent intent = new Intent(SignupActivity.this,LoginActivity.class);
intent.putExtra("desiredData",yourDesiredData);
startActivity(intent);
}
//Or if you want Fragment then
YourFragment fragment = new YourFragment();
Bundle arguments = new Bundle();
arguments.putString( "desiredData" , desired_string);
fragment.setArguments(arguments);
final FragmentTransaction ft =
getFragmentManager().beginTransaction();
ft.replace(R.id.content, fragment , FRAGMENT_TAG);
ft.commit();
}
@Override
public void onItemLongClick(View view, int position) {
Toast.makeText(Navigation.this, "Position " + position, Toast.LENGTH_SHORT).show();
String yourDesiredData = youArray[position];
//now you can fire intent with that data or start fragment transaction passing the data
Intent intent = new Intent(SignupActivity.this,LoginActivity.class);
intent.putExtra("desiredData",yourDesiredData);
startActivity(intent);
}
}));
您可以检索活动中的数据(在意图的情况下)
Intent receivedIntent = getIntent();
String data = intent.getStringExtra("desiredData")
或者如果使用片段,您可以像这样检索数据
Bundle arguments = getArguments();
String data = arguments.getString("desiredData");