【问题标题】:Using the Position value of a recyclerview item to start another fragment使用一个 recyclerview 项目的 Position 值来启动另一个 Fragment
【发布时间】:2017-09-12 07:00:44
【问题描述】:

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

这是我设法获得该职位的方法:

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

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

【问题讨论】:

  • 那么你的问题是什么?只需在 onItemClick() 方法中重定向它。
  • 适配器使用的是游标还是数组?
  • 我正在使用数组@ShriyanshGautam

标签: android


【解决方案1】:

尝试像这样使用 Intent 启动一个新活动,并将 Position 作为参数传递给 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();            }
        }));

【讨论】:

  • 我如何访问这个 i.putExtra("POSITION",position);作为一个变量来执行我的搜索?
  • 你能简单解释一下吗@user8532743
  • 这是正确的 Intent receivedIntent = getIntent();字符串数据 = intent.getStringExtra("desiredData")
  • 我认为这个评论是关于我的回答
  • @user8532743 Intent receivedIntent = getIntent(); String data = intent.getStringExtra("desiredData") 接收数据详细活动
【解决方案2】:

如果您使用数组作为数据适配器的输入,那么您可以在 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");

【讨论】:

  • 感谢@ShriyanshGautam 先生的专业知识
  • 嘿,位置没有传递给下一个活动。它说空
  • 你能告诉我你的列表活动和细节活动的代码吗?放入intent的数据不为空吗?
  • 在我的列表活动中,toast 显示位置名称,但是当数据传递到下一个活动时,当我尝试相同的 toast 时,它显示为 null。
  • 在将数据放入 Intent String yourDesiredData = youArray[position]; 之前,您能否检查数据是否为空
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多