获取特定 CardView 在 RecyclerView 中的位置(无需点击,滚动)Android
Get position of specific CardView in RecyclerView (Without Clicking, Scrolling) Android
我创建了一个带有 CardView 的 RecyclerView,其中包含时间间隔为 15 分钟的文本,具体取决于我的服务器给我的内容,例如(0:00,0:15,0:30,... 23:30, 23:45).现在我想这样做,如果用户在前一个 activity 中输入“11:00”,那么我将在这个 activity 中获得包含“11:00”的卡片的位置。我现在可以使用 getAdapterPosition() 获取位置,但这仅在我滚动到或浏览包含“11:00”的卡片时才会发生。如果我没有到达我的特定卡,则不知道该位置。
我的卡适配器:
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);
}
}
}
您可以在 public 方法中迭代 suggestTimeLists 并检查 suggestTimeLists.getSuggestTime().equals("11:00") 和 return 项目位置。
public int getPreferedPosition(){
for(int i=0; i<suggestTimeLists.size(); i++){
if(suggestTimeLists.get(i).getSuggestTime().equals("11:00")){
return i;
}
}
}
只需从您的 activity mAdapter.getPreferedPosition();
调用
我创建了一个带有 CardView 的 RecyclerView,其中包含时间间隔为 15 分钟的文本,具体取决于我的服务器给我的内容,例如(0:00,0:15,0:30,... 23:30, 23:45).现在我想这样做,如果用户在前一个 activity 中输入“11:00”,那么我将在这个 activity 中获得包含“11:00”的卡片的位置。我现在可以使用 getAdapterPosition() 获取位置,但这仅在我滚动到或浏览包含“11:00”的卡片时才会发生。如果我没有到达我的特定卡,则不知道该位置。
我的卡适配器:
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);
}
}
}
您可以在 public 方法中迭代 suggestTimeLists 并检查 suggestTimeLists.getSuggestTime().equals("11:00") 和 return 项目位置。
public int getPreferedPosition(){
for(int i=0; i<suggestTimeLists.size(); i++){
if(suggestTimeLists.get(i).getSuggestTime().equals("11:00")){
return i;
}
}
}
只需从您的 activity mAdapter.getPreferedPosition();
调用