2016-02-06 2 views
2

Я пытаюсь получить значение TextView из выбранного элемента в пределах RecyclerView. Мой RecyclerView файл макет имеет два TextView с, один для имени, а другая дата, как вы можете увидеть здесь:Получить выбранное значение TextView в RecyclerView

<TextView 
    android:id="@+id/layout_recyclerview_view_list_name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:textStyle="bold" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<TextView 
    android:id="@+id/layout_recyclerview_view_list_date" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignStart="@+id/layout_recyclerview_view_list_name" 
    android:layout_alignLeft="@+id/layout_recyclerview_view_list_name" 
    android:layout_below="@+id/layout_recyclerview_view_list_name" /> 

Это мой адаптер класс для RecyclerView:

List<ListsRecyclerViewList> list; 

public ListsRecyclerViewListAdapter(List<ListsRecyclerViewList> list) { 
    this.list = list; 
} 

@Override 
public ListsRecyclerViewListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_recyclerview_view_list, parent, false); 
    ListsRecyclerViewListViewHolder viewHolder = new ListsRecyclerViewListViewHolder(view); 

    return viewHolder; 
} 

@Override 
public void onBindViewHolder(ListsRecyclerViewListViewHolder holder, int position) { 
    holder.name.setText(list.get(position).getName()); 
    holder.date.setText(list.get(position).getDate()); 
} 

@Override 
public int getItemCount() { 
    return list.size(); 
} 

public static class ListsRecyclerViewListViewHolder extends RecyclerView.ViewHolder { 
    TextView name; 
    TextView date; 

    public ListsRecyclerViewListViewHolder(View view) { 
     super(view); 

     this.name = (TextView) view.findViewById(R.id.layout_recyclerview_view_list_name); 
     this.date = (TextView) view.findViewById(R.id.layout_recyclerview_view_list_date); 
    } 
} 

Это onClick событие, которое запускает другую деятельность, как я уже говорил ранее:

recyclerView.addOnItemTouchListener(
      new ListsRecyclerViewListListener(this, 
        new ListsRecyclerViewListListener.OnItemClickListener() { 
         @Override 
         public void onItemClick(View view, int position) { 
          Intent intent = new Intent(getBaseContext(), ListsEditListActivity.class); 
          Bundle bundle = new Bundle(); 

          bundle.putString("name", /*this is where I need to set the value*/); 
          intent.putExtras(bundle); 

          startActivity(intent); 
         } 
        }) 
    ); 

Это класс, который устанавливает значения для List и RecyclerView:

public String name; 
public String date; 

public ListsRecyclerViewList(String name, String date) { 
    this.name = name; 
    this.date = date; 
} 

Как я могу получить имя поля от выбранного элемента в RecyclerView и передать его на другой вид деятельности? Какие-либо предложения?

+0

Вы должны получить представление о прикосновении к вашему переработанному представлению и инициализировать оба объекта TextView в этом методе, используя ссылку на это представление. Из этого вы можете получить значение этого как TextViews – Piyush

+0

Piyush, не могли бы вы рассказать, может быть? – Razor

ответ

2

Вы можете использовать viewHolder.name.getText(list.get(position).name). Это получит текст от TextView в позиции, хранящейся в переменной position.

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