package com.marshalchen.common.demoofui.shapeimageview; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.marshalchen.common.demoofui.R; import com.squareup.picasso.Picasso; public class SampleListFragment extends Fragment { private static final String ARG_LAYOUT = "arg_layout"; public static SampleListFragment newInstance(int layout) { SampleListFragment fragment = new SampleListFragment(); Bundle args = new Bundle(); args.putInt(ARG_LAYOUT, layout); fragment.setArguments(args); return fragment; } public SampleListFragment() { } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.shape_image_fragment_list_sample, container, false); final Picasso picasso = Picasso.with(getActivity()); picasso.setLoggingEnabled(true); picasso.setIndicatorsEnabled(false); int listLayout = getArguments().getInt(ARG_LAYOUT); final ListView listView = (ListView) view.findViewById(R.id.list); Adapter adapter = new Adapter(getActivity(), picasso, listLayout); listView.setAdapter(adapter); return view; } private static class Adapter extends ArrayAdapter { private static final int MULTIPLY = 10; private static final String[][] IMAGES = new String[][] { {"https://farm4.staticflickr.com/3883/15068310256_891b454952_z.jpg", "Neo"}, {"https://farm6.staticflickr.com/5577/15068309796_1e0a5432cc_z.jpg", "Trinity"}, {"https://farm4.staticflickr.com/3871/15090945282_28a77fdf13_z.jpg", "Morpheus"}, {"https://farm4.staticflickr.com/3920/14904728998_4ea0126f6c_z.jpg", "Merovingian"}, {"https://farm6.staticflickr.com/5582/15088289881_ea1f961056_z.jpg", "Seraph"}, {"https://farm6.staticflickr.com/5566/15088290961_ce3ef590bf_z.jpg", "Architect"}, {"https://farm6.staticflickr.com/5551/14904729458_c160044da4_z.jpg", "Persephone"}, {"https://farm4.staticflickr.com/3877/14904657620_dca7f86632_z.jpg", "Spoon Boy"}, {"https://farm6.staticflickr.com/5553/15068310526_bc4ac2dae1_z.jpg", "Engineer"}, {"https://farm4.staticflickr.com/3843/14904747157_a02c252a5a_z.jpg", "Mifune"}, {"https://farm4.staticflickr.com/3907/15090945042_4f81659a40_z.jpg", "Oracle"}, {"https://farm4.staticflickr.com/3840/14904728468_5790cbdf89_z.jpg", "Cypher"} }; Picasso picasso; int layout; private Adapter(Context context, Picasso picasso, int layout) { super(context, 0); this.picasso = picasso; this.layout = layout; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView == null) { convertView = LayoutInflater.from(getContext()).inflate(layout, parent, false); holder = new ViewHolder(); holder.image = (ImageView) convertView.findViewById(R.id.image); holder.title = (TextView) convertView.findViewById(R.id.title); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } position = position % IMAGES.length; String title = IMAGES[position][1]; String url = IMAGES[position][0]; holder.title.setText(title); picasso.load(url) .placeholder(R.drawable.shape_image_placeholder) .into(holder.image); return convertView; } @Override public int getCount() { return IMAGES.length * MULTIPLY; } } private static class ViewHolder { ImageView image; TextView title; } }