2017-02-05 2 views
0

Это мой адаптер для RecyclerView. Как я могу получить значение deckName в другом мероприятии?Как я могу получить значение текстового вида в элементе recyclerview?

public class ViewHolder extends RecyclerView.ViewHolder { 
    public RelativeLayout deckLayout; 
    public LinearLayout countsLayout; 
    public ImageButton deckExpander; 
    public ImageButton indentView; 
    public TextView deckName; 
    public TextView deckNew, deckLearn, deckRev; 

    public ViewHolder(View v) { 
     super(v); 
     deckLayout = (RelativeLayout) v.findViewById(R.id.DeckPickerHoriz); 
     countsLayout = (LinearLayout) v.findViewById(R.id.counts_layout); 
     deckExpander = (ImageButton) v.findViewById(R.id.deckpicker_expander); 
     indentView = (ImageButton) v.findViewById(R.id.deckpicker_indent); 
     deckName = (TextView) v.findViewById(R.id.deckpicker_name); 
     deckNew = (TextView) v.findViewById(R.id.deckpicker_new); 
     deckLearn = (TextView) v.findViewById(R.id.deckpicker_lrn); 
     deckRev = (TextView) v.findViewById(R.id.deckpicker_rev); 


    } 
} 

Я хочу, чтобы получить это значение и сравнить его со строкой здесь:

final int itemCount = mDeckListAdapter.getItemCount(); 
DeckAdapter a = new DeckAdapter(getLayoutInflater(), getApplicationContext()); 
for(int i=0;i<itemCount;i++){ 
    // final CharSequence text = DeckAdapter.ViewHolder.deckName.getText(); 
    if (text.equals(di)){ 
     mRecyclerView.findViewHolderForAdapterPosition(i).itemView.performClick(); 
    } 
} 

, но этот код не работает на самом деле.

+0

Не можете использовать это, чтобы получить текст: 'mRecyclerView.findViewHolderForAdapterPosition (i) .deckName.getText(). ToString()'? –

+0

@Nicolas Maltais no can not resolve symbol deckname – golbahar

+0

Вы пытаетесь реализовать элемент click on recyclerview? – vishnumm93

ответ

1

Попробуйте

String title = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.title)).getText().toString(); 

Я использовал как

recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), recyclerView, new RecyclerTouchListener.ClickListener() { 
     @Override 
     public void onClick(View view, int position) { 
      // String title = ((TextView) view.findViewById(R.id.title)).getText().toString(); 
      String title1 = ((TextView) recyclerView.findViewHolderForAdapterPosition(position).itemView.findViewById(R.id.title)).getText().toString(); 
      Toast.makeText(getApplicationContext(), title1, Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onLongClick(View view, int position) { } 
    })); 
+0

thanx для ответа это сработало – golbahar

0

Вы можете попробовать это.

Используйте ниже код, в котором вы хотите получить значение из текстового поля, чтобы вы могли перебирать значение каждого текстового вида из вашего RecyclerView.

for(int i=0;i<itemCount;i++) 
{ 
    View view=mRecyclerView.getChildAt(i); // This will give you entire row(child) from RecyclerView 
    if(view!=null) 
    { 
     TextView textView= (TextView) view.findViewById(R.id.deckpicker_name); 
     String text=textView.getText().toString(); 
     if (text.equals(di)){ 
      // Do your stuff, after comparison 
     } 
     } 
} 

Я не проверял это, но надеюсь, что это сработает для вас как-то.

+0

tnx за вашу помощь – golbahar

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