提问者:小点点

使用回收站视图项的位置值启动另一个片段


我有一个不同文章的回收器视图,我可以得到这个回收器视图项的位置,但是我仍然不知道如何使用那个位置在一个整页/另一个活动中打开文章。

以下是我如何获得这个职位的:

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();            }
}));

我想实现的是,当用户单击任何文章时,他们会被重定向到一个新的片段或活动,在那里他们可以完整地查看回收者。.问候


共2个答案

匿名用户

尝试像这样使用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");