Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company.user.recyclerviewdecorationtest;
- import android.graphics.Rect;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.support.v7.widget.DividerItemDecoration;
- import android.support.v7.widget.LinearLayoutManager;
- import android.support.v7.widget.RecyclerView;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.TextView;
- import java.util.Arrays;
- import java.util.Random;
- public class MainActivity extends AppCompatActivity {
- public static class ViewHolder extends RecyclerView.ViewHolder {
- public ViewHolder(View itemView) {
- super(itemView);
- }
- }
- public class FooterDecoration extends RecyclerView.ItemDecoration {
- @Override
- public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
- int position = parent.getChildAdapterPosition(view);
- if (position == state.getItemCount() - 1) {
- outRect.set(0, 0, 0, 100);
- }
- }
- }
- private String[] testList;
- private RecyclerView.Adapter<ViewHolder> modelAdapter;
- private static final String alphabet = "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz";
- private static String[] generateTestData() {
- Random random = new Random();
- int count = 10;// + random.nextInt(100);
- String[] dataList = new String[count];
- for (int i = 0; i < count; i++) {
- int length = 10 + random.nextInt(100);
- StringBuilder stringBuilder = new StringBuilder(length);
- for (int j = 0; j < length; j++) {
- stringBuilder.append(alphabet.charAt(random.nextInt(alphabet.length())));
- }
- dataList[i] = stringBuilder.toString();
- }
- return dataList;
- }
- private static void truncateTestDataItems(String[] dataList) {
- for (int i = 0; i < dataList.length; i++) {
- if (!dataList[i].isEmpty()) {
- dataList[i] = dataList[i].substring(0, dataList[i].length() - 1);
- }
- }
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- testList = generateTestData();
- RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
- recyclerView.setHasFixedSize(true);
- LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
- recyclerView.setLayoutManager(layoutManager);
- DividerItemDecoration itemDecoration = new DividerItemDecoration(this, layoutManager.getOrientation());
- recyclerView.addItemDecoration(itemDecoration);
- FooterDecoration footerDecoration = new FooterDecoration();
- recyclerView.addItemDecoration(footerDecoration);
- modelAdapter = new RecyclerView.Adapter<ViewHolder>() {
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
- View root = getLayoutInflater().inflate(R.layout.list_item, parent, false);
- return new ViewHolder(root);
- }
- @Override
- public void onBindViewHolder(ViewHolder holder, int position) {
- TextView textView = (TextView) holder.itemView.findViewById(R.id.text_view);
- textView.setText(testList[position]);
- }
- @Override
- public int getItemCount() {
- return testList.length;
- }
- };
- recyclerView.setAdapter(modelAdapter);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- menu.add("NEW").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
- menu.add("REMOVE").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
- return super.onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (item.getTitle().equals("NEW")) {
- testList = generateTestData();
- modelAdapter.notifyDataSetChanged();
- return true;
- }
- if (item.getTitle().equals("REMOVE")) {
- testList = Arrays.copyOfRange(testList, 0, testList.length - 1);
- modelAdapter.notifyItemRemoved(modelAdapter.getItemCount() - 1);
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement