Links & DependenciesMainActivity.javaactivity_main.xmlExampleItem.javaexample_item.xmlExampleAdapter.java
RecyclerView and CardView Dependencies:
developer.android.com/topic/libraries/support-library/packages.html#v7-recyclerview
developer.android.com/topic/libraries/support-library/packages.html#v7-cardview
package com.codinginflow.sortingexample; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; public class MainActivity extends AppCompatActivity { private ArrayList<ExampleItem> mExampleList; private ArrayAdapter<String> mListViewAdapter; private ExampleAdapter mRecyclerViewAdapter; private String[] mArrayNames = new String[]{"Daryl", "Rick", "Abraham", "Eugene"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); createExampleList(); buildRecyclerView(); buildListView(); Button buttonSort = findViewById(R.id.button_sort); buttonSort.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sortArray(); sortArrayList(); } }); } private void sortArray() { Arrays.sort(mArrayNames); mListViewAdapter.notifyDataSetChanged(); } private void sortArrayList() { Collections.sort(mExampleList, new Comparator<ExampleItem>() { @Override public int compare(ExampleItem o1, ExampleItem o2) { return o1.getText2().compareTo(o2.getText2()); } }); mRecyclerViewAdapter.notifyDataSetChanged(); } private void createExampleList() { mExampleList = new ArrayList<>(); mExampleList.add(new ExampleItem(R.drawable.ic_android, "Daryl", "Dixon")); mExampleList.add(new ExampleItem(R.drawable.ic_audio, "Rick", "Grimes")); mExampleList.add(new ExampleItem(R.drawable.ic_sun, "Abraham", "Ford")); mExampleList.add(new ExampleItem(R.drawable.ic_android, "Eugene", "Porter")); } private void buildRecyclerView() { RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setHasFixedSize(true); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); mRecyclerViewAdapter = new ExampleAdapter(mExampleList); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter(mRecyclerViewAdapter); } private void buildListView() { ListView listView = findViewById(R.id.listView); mListViewAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mArrayNames); listView.setAdapter(mListViewAdapter); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.codinginflow.sortingexample.MainActivity"> <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:padding="4dp" /> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background="@android:color/darker_gray" android:padding="4dp" android:scrollbars="vertical" /> <Button android:id="@+id/button_sort" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="sort" /> </LinearLayout>
package com.codinginflow.sortingexample; public class ExampleItem { private int mImageResource; private String mText1; private String mText2; public ExampleItem(int imageResource, String text1, String text2) { mImageResource = imageResource; mText1 = text1; mText2 = text2; } public int getImageResource() { return mImageResource; } public String getText1() { return mText1; } public String getText2() { return mText2; } }
<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="4dp" app:cardCornerRadius="4dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="4dp"> <ImageView android:id="@+id/imageView" android:layout_width="50dp" android:layout_height="50dp" android:padding="2dp" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toEndOf="@+id/imageView" android:text="Line 1" android:textColor="@android:color/black" android:textSize="20sp" android:textStyle="bold" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView" android:layout_marginStart="8dp" android:layout_toEndOf="@+id/imageView" android:text="Line 2" android:textSize="15sp" /> </RelativeLayout> </android.support.v7.widget.CardView>
package com.codinginflow.sortingexample; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; public class ExampleAdapter extends RecyclerView.Adapter<ExampleAdapter.ExampleViewHolder> { private ArrayList<ExampleItem> mExampleList; public static class ExampleViewHolder extends RecyclerView.ViewHolder { public ImageView mImageView; public TextView mTextView1; public TextView mTextView2; public ExampleViewHolder(View itemView) { super(itemView); mImageView = itemView.findViewById(R.id.imageView); mTextView1 = itemView.findViewById(R.id.textView); mTextView2 = itemView.findViewById(R.id.textView2); } } public ExampleAdapter(ArrayList<ExampleItem> exampleList) { mExampleList = exampleList; } @Override public ExampleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.example_item, parent, false); ExampleViewHolder evh = new ExampleViewHolder(v); return evh; } @Override public void onBindViewHolder(ExampleViewHolder holder, int position) { ExampleItem currentItem = mExampleList.get(position); holder.mImageView.setImageResource(currentItem.getImageResource()); holder.mTextView1.setText(currentItem.getText1()); holder.mTextView2.setText(currentItem.getText2()); } @Override public int getItemCount() { return mExampleList.size(); } }