2017-02-21 9 views
0

Я создал RecyclerView с CardView, содержащий текст интервала времени 15 минут, в зависимости от того, что мне дает мой сервер, например (0:00, 0:15, 0 : 30, ... 23:30, 23:45). Теперь я хочу сделать так, чтобы, если пользователь вводит «11:00» в предыдущую операцию, я получу позицию карты, содержащей «11:00» в этом действии. Теперь я могу получить позицию, используя getAdapterPosition(), но это только в том случае, если я прокрутил страницу или через карту, содержащую «11:00». Позиция не известна, если я не достиг конкретной карты.Получить позицию конкретного CardView в RecyclerView (без щелчка, прокрутки) Android

Мой CardAdapter:

public class SuggestTimeCardAdapter extends RecyclerView.Adapter<SuggestTimeCardAdapter.ViewHolder> { 

private Context context; 
List<SuggestTimeList> suggestTimeLists; 
Integer selected_position = -1; 

public SuggestTimeCardAdapter(List<SuggestTimeList> suggestTimeLists, Context context){ 
    super(); 
    this.suggestTimeLists = suggestTimeLists; 
    this.context = context; 
} 

@Override 
public SuggestTimeCardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View v = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.suggest_time_card, parent, false); 
    SuggestTimeCardAdapter.ViewHolder viewHolder = new SuggestTimeCardAdapter.ViewHolder(v); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(final SuggestTimeCardAdapter.ViewHolder holder, final int position) { 

    final SuggestTimeList suggestTimeList = suggestTimeLists.get(position); 

    holder.tvSuggestTime.setText(suggestTimeList.getSuggestTime()); 

    if(holder.tvSuggestTime.getText().equals("11:00")){ 
     //position at 11 is holder.getAdapterPosition() 
    } 




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

class ViewHolder extends RecyclerView.ViewHolder { 
    public TextView tvSuggestTime; 
    public CardView suggest_time_card_view; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     tvSuggestTime = (TextView) itemView.findViewById(R.id.tvSuggestTime); 
     suggest_time_card_view = (CardView) itemView.findViewById(R.id.suggest_time_card_view); 

    } 
} 
} 

ответ

1

Вы можете просто перебирать suggestTimeLists в публичном методе и проверить, если suggestTimeLists.getSuggestTime() равно ("11:00") и возвращает позицию элементов..

public int getPreferedPosition(){ 
    for(int i=0; i<suggestTimeLists.size(); i++){ 
     if(suggestTimeLists.get(i).getSuggestTime().equals("11:00")){ 
      return i; 
     } 
    } 
} 

Просто позвоните из своей деятельности mAdapter.getPreferedPosition();

+0

Спасибо, удивительное решение! – JerryKo

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