2015-05-13 2 views
3

Мне нужно начать действие, основанное на элементе, который пользователь нажимает на RecyclerView. Код ниже имеет позицию в качестве ссылки. Кто-нибудь знает, как это сделать? Мне нужно что-то вроде Intent intent = new Intent (MainActivity.this, Target.class). Целевой класс изменяется в зависимости от выбранного элемента.startActivity() на RecyclerView Item

 mRecyclerView.addOnItemTouchListener(
      new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() { 
       @Override public void onItemClick(View view, int position) { 

        Intent intent = new Intent(MainActivity.this, ???); 
        startActivity(intent); 

       } 
      }) 
    ); 

ответ

0

У вас есть коллекция объектов (возможно, ArrayList), попробуйте добавить объект, который имеет поле типа класса, а затем получить его так:

1

Ну, как насчет того, чтобы просто поместить правильный OnClickListener в представление каждого элемента в RecyclerView? Каждый OnClickListener может хранить целевой класс, необходимый для обработки навигации. Вы можете справиться с этим в фазе привязки адаптера RecyclerView, там нет волшебства.

0

Вам просто нужно поставить onclicklistener вашего viewholder (содержат представления).

private MainActivity mAct; 

viewHolder.itemView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mAct.animateActivity(anything); 

     } 
    }); 


public void animateActivity(anything any) { 


    Intent i = new Intent(this, AssetDescription.class); 
    //Some anitmation if you want 
    startActivity(i); 
} 
1

Выберите нужный класс с помощью position:

mRecyclerView.addOnItemTouchListener(
     new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() { 
      @Override public void onItemClick(View view, int position) { 
       switch(position){ 
       case 0: 
        startActivity(new Intent(MainActivity.this, A.class)); 
        break; 
       case 1: 
        startActivity(new Intent(MainActivity.this, B.class)); 
        break; 
       default: 
        break; 
       } 
      } 
     }) 
); 

Конечно, вы должны определить отображение из position в target class.

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