17817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas/* 2ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikas * Copyright 2018 The Android Open Source Project 37817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * 47817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * Licensed under the Apache License, Version 2.0 (the "License"); 57817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * you may not use this file except in compliance with the License. 67817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * You may obtain a copy of the License at 77817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * 87817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * http://www.apache.org/licenses/LICENSE-2.0 97817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * 107817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * Unless required by applicable law or agreed to in writing, software 117817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * distributed under the License is distributed on an "AS IS" BASIS, 127817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * See the License for the specific language governing permissions and 147817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * limitations under the License. 157817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas */ 167817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 17ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.recyclerview.widget; 187817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 197817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.content.Context; 207817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.graphics.Canvas; 217817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.support.test.InstrumentationRegistry; 227817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.support.test.filters.SmallTest; 237817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.support.test.runner.AndroidJUnit4; 247817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.view.ContextThemeWrapper; 257817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.view.ViewGroup; 267817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport android.widget.TextView; 277817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 28c95a6f1f125ad3a7e1f9f79bccf4b2603bc40ebaAurimas Liutikasimport androidx.annotation.NonNull; 29c95a6f1f125ad3a7e1f9f79bccf4b2603bc40ebaAurimas Liutikasimport androidx.recyclerview.test.R; 30c95a6f1f125ad3a7e1f9f79bccf4b2603bc40ebaAurimas Liutikas 317817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport org.junit.Test; 327817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikasimport org.junit.runner.RunWith; 337817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 347817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas/** 357817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas * Tests for {@link DividerItemDecoration}. 367817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas */ 377817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas@SmallTest 387817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas@RunWith(AndroidJUnit4.class) 397817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikaspublic class DividerItemDecorationTest { 407817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas private static final String[] STRINGS = {"Foo", "Bar", "Great"}; 417817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 427817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas @Test 437817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas public void testNullListDivider() { 447817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas final Context context = InstrumentationRegistry.getContext(); 457817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas RecyclerView rv = new RecyclerView(context); 467817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas rv.setLayoutManager(new LinearLayoutManager(context)); 477817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas rv.setAdapter(new MyAdapter(STRINGS)); 487817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas DividerItemDecoration decoration = new DividerItemDecoration( 497817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas new ContextThemeWrapper(context, R.style.nullListDivider), 507817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas DividerItemDecoration.HORIZONTAL); 517817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas rv.addItemDecoration(decoration); 527817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas rv.layout(0, 0, 1000, 1000); 537817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas decoration.onDraw(new Canvas(), rv, null); 547817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas } 557817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 567817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas private static class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { 577817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas private String[] mDataset; 587817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 597817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas public static class ViewHolder extends RecyclerView.ViewHolder { 607817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas TextView mTextView; 617817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas ViewHolder(TextView v) { 627817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas super(v); 637817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas mTextView = v; 647817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas } 657817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas } 667817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 677817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas MyAdapter(String[] myDataset) { 687817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas mDataset = myDataset; 697817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas } 707817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 717817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas @Override 728a11e6829c522aa1efcc903afa4c01d337082eabChris Craik public MyAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 737817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas return new ViewHolder(new TextView(parent.getContext())); 747817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas } 757817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 767817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas @Override 778a11e6829c522aa1efcc903afa4c01d337082eabChris Craik public void onBindViewHolder(@NonNull ViewHolder holder, int position) { 787817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas holder.mTextView.setText(mDataset[position]); 797817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas } 807817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas 817817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas @Override 827817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas public int getItemCount() { 837817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas return mDataset.length; 847817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas } 857817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas } 867817068d6307274e2a49cc3a9cb197afd6c1d0e0Aurimas Liutikas} 87