1
私はRoboletricを使用しており、onClickを "viewHolder.cardView"要素にテストしたいと思います。Roboletric - テストonカスタムアダプター要素をクリック
これは私のカスタムアダプター(2つの要素があります)です。私はすでにリストとアダプタを構築していますが、roboletricでonClickイベントをどのようにテストできますか?
SiteAdapter.ViewHolder viewHolder = adapter.onCreateViewHolder(viewGroup, -1);
adapter.setSites(SITES);
adapter.bindViewHolder(viewHolder, 0);
viewHolder.rowLayout.performClick();
verify(busMock).send(selectedEventCaptor.capture());
assertThat(selectedEventCaptor.getValue().getSite()).isEqualTo(SITES.get(0));
:ここ
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_TIME_FORMAT, Locale.getDefault());
if (position < mMessageList.size()) {
ItemHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext())
.inflate(R.layout.item_list, parent, false);
viewHolder = new ItemHolder();
viewHolder.cardView = (RelativeLayout) convertView.findViewById(R.id.clickable_area);
viewHolder.txtDate = (TextView) convertView.findViewById(R.id.message_date);
convertView.setTag(viewHolder);
} else {
viewHolder = (ItemHolder) convertView.getTag();
}
final ItemModel item = mMessageList.get(position);
if (item != null) {
viewHolder.id = item.getId();
if (item.getTimestamp() != null){
viewHolder.txtDate.setText(dateFormat.format(item.getTimestamp()));
}
viewHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
addSelection();
}
});
viewHolder.cardView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
return true;
}
});
viewHolder.cardView.setSelected(item.isSelected());
}
}
return convertView;
}
static class ItemHolder {
protected RelativeLayout cardView;
protected TextView txtDate;
}