From 9897558c53402e4e8a309f29b94a9bed3ea8db94 Mon Sep 17 00:00:00 2001 From: Vortana Say Date: Sun, 7 May 2017 20:22:38 -0500 Subject: [PATCH] create Master List Fragment with view holder pattern --- app/src/main/AndroidManifest.xml | 5 +-- .../android/android_me/ui/MainActivity.java | 15 ++++++++ .../android_me/ui/MasterListAdapter.java | 33 +++++++++-------- .../android_me/ui/MasterListFragment.java | 35 +++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 6 ++++ .../main/res/layout/fragment_master_list.xml | 13 +++++++ app/src/main/res/layout/image_item.xml | 8 +++++ 7 files changed, 98 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/com/example/android/android_me/ui/MainActivity.java create mode 100644 app/src/main/java/com/example/android/android_me/ui/MasterListFragment.java create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/fragment_master_list.xml create mode 100644 app/src/main/res/layout/image_item.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a4bb27364..7dfda4060 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,7 +11,8 @@ - + + @@ -20,4 +21,4 @@ - \ No newline at end of file + diff --git a/app/src/main/java/com/example/android/android_me/ui/MainActivity.java b/app/src/main/java/com/example/android/android_me/ui/MainActivity.java new file mode 100644 index 000000000..f51e46aee --- /dev/null +++ b/app/src/main/java/com/example/android/android_me/ui/MainActivity.java @@ -0,0 +1,15 @@ +package com.example.android.android_me.ui; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; + +import com.example.android.android_me.R; + +public class MainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + } +} diff --git a/app/src/main/java/com/example/android/android_me/ui/MasterListAdapter.java b/app/src/main/java/com/example/android/android_me/ui/MasterListAdapter.java index ed4ee4158..d52c15be4 100755 --- a/app/src/main/java/com/example/android/android_me/ui/MasterListAdapter.java +++ b/app/src/main/java/com/example/android/android_me/ui/MasterListAdapter.java @@ -20,9 +20,10 @@ import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; -import android.widget.GridView; import android.widget.ImageView; +import com.example.android.android_me.R; + import java.util.List; @@ -35,6 +36,7 @@ public class MasterListAdapter extends BaseAdapter { /** * Constructor method + * * @param imageIds The list of images to display */ public MasterListAdapter(Context context, List imageIds) { @@ -60,25 +62,26 @@ public long getItemId(int i) { return 0; } - /** - * Creates a new ImageView for each item referenced by the adapter - */ public View getView(final int position, View convertView, ViewGroup parent) { - ImageView imageView; if (convertView == null) { - // If the view is not recycled, this creates a new ImageView to hold an image - imageView = new ImageView(mContext); - // Define the layout parameters - imageView.setAdjustViewBounds(true); - imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); - imageView.setPadding(8, 8, 8, 8); - } else { - imageView = (ImageView) convertView; + convertView = View.inflate(mContext, R.layout.image_item, null); + + final ImageView imageView = (ImageView) convertView.findViewById(R.id.image_item); + final ViewHolder viewHolder = new ViewHolder(imageView); + convertView.setTag(viewHolder); } // Set the image resource and return the newly created ImageView - imageView.setImageResource(mImageIds.get(position)); - return imageView; + final ViewHolder viewHolder = (ViewHolder) convertView.getTag(); + viewHolder.imageViewItem.setImageResource(mImageIds.get(position)); + return convertView; } + private class ViewHolder { + private final ImageView imageViewItem; + + ViewHolder(ImageView imageViewItem) { + this.imageViewItem = imageViewItem; + } + } } diff --git a/app/src/main/java/com/example/android/android_me/ui/MasterListFragment.java b/app/src/main/java/com/example/android/android_me/ui/MasterListFragment.java new file mode 100644 index 000000000..145c1e403 --- /dev/null +++ b/app/src/main/java/com/example/android/android_me/ui/MasterListFragment.java @@ -0,0 +1,35 @@ +package com.example.android.android_me.ui; + +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.GridView; + +import com.example.android.android_me.R; +import com.example.android.android_me.data.AndroidImageAssets; + +/** + * Created by vsaya on 5/7/17. + */ + +public class MasterListFragment extends Fragment { + private GridView gridView; + private MasterListAdapter masterListAdapter; + + public MasterListFragment() { + + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + View rootView = inflater.inflate(R.layout.fragment_master_list, container, false); + gridView = (GridView) rootView.findViewById(R.id.image_grid_view); + masterListAdapter = new MasterListAdapter(getActivity(), AndroidImageAssets.getAll()); + gridView.setAdapter(masterListAdapter); + return rootView; + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 000000000..fc9a9086b --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,6 @@ + + diff --git a/app/src/main/res/layout/fragment_master_list.xml b/app/src/main/res/layout/fragment_master_list.xml new file mode 100644 index 000000000..91a918703 --- /dev/null +++ b/app/src/main/res/layout/fragment_master_list.xml @@ -0,0 +1,13 @@ + + diff --git a/app/src/main/res/layout/image_item.xml b/app/src/main/res/layout/image_item.xml new file mode 100644 index 000000000..9c47f1ac2 --- /dev/null +++ b/app/src/main/res/layout/image_item.xml @@ -0,0 +1,8 @@ + +