package com.bulletnoid.android.widget.StaggeredGridViewDemo; import android.app.Application; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.ArrayList; public class STGVAdapter extends BaseAdapter { private Context mContext; private Application mAppContext; private DataSet mData = new DataSet(); private ArrayList<Item> mItems = new ArrayList<Item>(); private int newPos = 19; public STGVAdapter(Context context, Application app) { mContext = context; mAppContext = app; getMoreItem(); } public void getMoreItem() { for (int i = 0; i < 20; i++) { Item item = new Item(); item.url = mData.url[i]; item.width = mData.width[i]; item.height = mData.height[i]; mItems.add(item); } } public void getNewItem() { Item item = new Item(); item.url = mData.url[newPos]; item.width = mData.width[newPos]; item.height = mData.height[newPos]; mItems.add(0, item); newPos = (newPos - 1) % 19; } @Override public int getCount() { return mItems == null ? 0 : mItems.size(); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { View view = null; final Item item = mItems.get(position); String url = item.url; if (convertView == null) { Holder holder = new Holder(); view = View.inflate(mContext, R.layout.cell_stgv, null); holder.img_content = (STGVImageView) view.findViewById(R.id.img_content); holder.tv_info = (TextView) view.findViewById(R.id.tv_info); view.setTag(holder); } else { view = convertView; } Holder holder = (Holder) view.getTag(); /** * StaggeredGridView has bugs dealing with child TouchEvent * You must deal TouchEvent in the child view itself **/ holder.img_content.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); holder.tv_info.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); holder.tv_info.setText(position + " : " + item.width + "/" + item.height); holder.img_content.mHeight = item.height; holder.img_content.mWidth = item.width; // Picasso.with(mAppContext).load(url).into(holder.img_content); return view; } class Holder { STGVImageView img_content; TextView tv_info; } }