2016-12-22 7 views
1

Я хотел бы проверить имущество одного из пунктов в RecyclerView. Чтобы быть более конкретным, я хочу проверить, выбран ли этот элемент.Проверьте, выбран ли элемент в списке ресайклеров

Во-первых, я выбираю пункт

onView(withId(R.id.list_master)) 
      .perform(
        RecyclerViewActions.actionOnItemAtPosition(14, clickAnItem(R.id.layout_menu)) 
      ); 

Во-вторых, проверьте, если выбран конкретный пункт:

 onView(allOf(withId(R.id.layout_menu), hasDescendant(withText("SO")))) 
      .check(matches(isSelected())); 

С помощью персонализированного согласовани:

private static Matcher<View> isSelected() { 
    return new TypeSafeMatcher<View>() { 
     @Override 
     protected boolean matchesSafely(View item) { 

      return item.isSelected(); 
     } 

     @Override 
     public void describeTo(Description description) { 
      description.appendText("Selected property"); 
     } 
    }; 

К сожалению, состояние этой точки зрения не выбран, но пользовательский интерфейс показывает, что он успешно отмечен как выбранный элемент. Сведения об осуществлении

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 
    final ViewHolder viewHolder = (ViewHolder) holder; 
    viewHolder.itemView.setSelected(position == selected); 

ответ

2

Проверьте этот код. Мне было то же самое, что вы хотите проверить, выбрано или нет поле в окне Recycler View.

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

private Context context; 
private Fragment fragment; 
private ArrayList<ObjGetLookupDataResponseIn> lookupData; 


public AutoWithRuleListListAdapter(Context context, Fragment fragment, ArrayList<ObjGetLookupDataResponseIn> lookupData) { 
    this.context = context; 
    this.fragment = fragment; 
    this.lookupData = lookupData; 

} 

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

@Override 
public void onBindViewHolder(final ViewHolder holder, @SuppressLint("RecyclerView") final int position) { 
    String output = lookupData.get(position).getDisplayName().substring(0, 1).toUpperCase() + lookupData.get(position).getDisplayName().substring(1); 
    holder.radioBen.setText(output); 
    holder.radioBen.setOnCheckedChangeListener(null); 
    holder.radioBen.setChecked(lookupData.get(position).isSelected()); 

    holder.radioBen.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      resetAll(); 
      lookupData.get(position).setSelected(true); 
      notifyDataSetChanged(); 
      ((AutoViewRuleFragment)fragment).ruleName(position); 
     } 
    }); 


} 

private void resetAll() { 
    for (int i=0;i<lookupData.size();i++) 
    { 
     lookupData.get(i).setSelected(false); 
    } 
    notifyDataSetChanged(); 
} 


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

public class ViewHolder extends RecyclerView.ViewHolder { 
    RadioButton radioBen; 

    public ViewHolder(View itemView) { 
     super(itemView); 

     radioBen = (RadioButton) itemView.findViewById(R.id.radioReceivesFunds); 
     radioBen.setTypeface(Utils.gothamMedium); 

    } 
}} 

метод RuleName в моем фрагменте, через который я получить позицию булевой view.Add, выбранных в вашем POJO, если этот пункт выбран или нет. Надеюсь, что эта помощь поможет. Хранение кодирования. Проголосуйте, если вы сочтете это полезным.

+0

Спасибо, но мой вопрос касается теста эспрессо. К сожалению, этот ответ не имеет значения – Gleichmut

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

  • Нет связанных вопросов^_^