在不同的Activity中返回clicklerview中单击的位置?

时间:2015-06-05 19:03:42

标签: android onclick position android-recyclerview

我在导航抽屉中有一个recylcerview,我希望在另一个活动中找到用户在recyclerview中点击的位置。我编写代码的方式目前总是返回0作为位置。谁能帮我吗。提前谢谢!

导航抽屉代码中的Recyclerview:

   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         final Bundle savedInstanceState) {
    // Inflate the layout for this fragment
        View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
    recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);
    adapter = new NavigationDrawerFragmentAdapter(getActivity(), getData());
    recyclerView.setAdapter(adapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
    recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView,new RecyclerViewClickListener() {
        @Override
        public void onClick(View view, int position) {
            if (position == 0){

            }
            if (position == 27){

            }
            if (position == 28){

            }
            if (position == 29){

            }
            if (position ==30){

            }
            else{
            test.getPositionClicked(position);
            Intent i = new Intent(getActivity(), Test.class);
            startActivity(i);
            }
        }
        @Override
        public void onLongClick(View view, int position) {
        }
    }));
    return layout;
}

我的活动代码,我希望找到点击的位置:

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    Toast.makeText(Test.this, "Toast is working " + pos, Toast.LENGTH_SHORT).show();

    if (pos == 1){
        Toast.makeText(Test.this, "Accounting", Toast.LENGTH_SHORT).show();
    }
}

public void getPositionClicked(int position) {
    position = pos;
}

再次感谢!

2 个答案:

答案 0 :(得分:1)

您需要在捆绑中传递数据并将其添加到新活动的意图中。

// onClick at recycler

Intent intent = new Intent();
intent.setClass(context, Other_Activity.class);
intent.putExtra("SOME_ID", position);
startActivity(intent);

//第二项活动

@Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   Bundle extras = getIntent().getExtras();
   if (extras != null) {
    int position = extras.getInt("SOME_ID");
}

答案 1 :(得分:1)

如果我理解正确,您希望将位置传递给活动,即您正在开始。然后你可以将position的值传递给intent:

Intent i = new Intent(getActivity(), Test.class);
i.putExtra("position", position);
startActivity(i);

然后在Test活动中检索值:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    Bundle extras = getIntent().getExtras();
    if(extras != null) position = extras.getInt("position", 0);
}