简体   繁体   English

获取特定CardView在RecyclerView中的位置(无需单击,滚动)Android

[英]Get position of specific CardView in RecyclerView (Without Clicking, Scrolling) Android

I created a RecyclerView with CardView containing text of time interval of 15 minutes depending on what my server gives me, eg(0:00 , 0:15, 0:30,... 23:30, 23:45). 我用CardView创建了一个RecyclerView,其中包含15分钟时间间隔的文本,具体取决于服务器给我的信息,例如(0:00、0:15、0:30,... 23:30、23:45)。 Now I want to make so that if the user enters "11:00" on the previous activity then I will get the position of the card containing "11:00" in this activity. 现在,我要进行设置,以便如果用户在上一个活动中输入“ 11:00”,那么我将获得此活动中包含“ 11:00”的卡片的位置。 I can now get the position using getAdapterPosition() but this is only if I have scrolled to or through the card containing "11:00". 现在,我可以使用getAdapterPosition()获取位置,但这仅在我滚动到包含“ 11:00”的卡片或在其中滚动的情况下才可以。 The position is not known if I don't reach my specific card. 如果我未到达特定的卡位,则该职位未知。

My CardAdapter: 我的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);

    }
}
}

You can just iterate suggestTimeLists in a public method and check if suggestTimeLists.getSuggestTime().equals("11:00") and return the items position. 您可以仅使用公共方法来迭代RecommendationTimeLists,然后检查是否hintingTimeLists.getSuggestTime()。equals(“ 11:00”)并返回项目位置。

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

Just call from your activity mAdapter.getPreferedPosition(); 只需从您的活动调用mAdapter.getPreferedPosition();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM