2015-06-05 1 views
0

У меня есть recylcerview в навигационном ящике, и я хочу найти, какая позиция была нажата пользователем в recyclerview в другом действии. То, как я написал код, всегда возвращает 0 в качестве позиции. Может кто-нибудь мне помочь. Заранее спасибо!Возврат позиции, занятой в recyclerview, в другой деятельности?

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

Еще раз спасибо!

ответ

1

Вам необходимо передать данные в комплекте и добавить их в намерения новой деятельности.

// OnClick в утилизатор

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"); 
} 
+0

Идеальный ответ поблагодарить вас –

1

Если я вас правильно понял, вы хотите передать позицию в деятельности, что вы начинаете. Затем вы можете передать значение позиции намерению:

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

А потом в тесте активности получить значение:

@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); 
} 
+0

Это отлично работает, спасибо! –

Смежные вопросы