package se.emilsjolander.flipview; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.TextView; public class FlipAdapter extends BaseAdapter implements OnClickListener { public interface Callback{ public void onPageRequested(int page); } static class Item { static long id = 0; long mId; public Item() { mId = id++; } long getId(){ return mId; } } private LayoutInflater inflater; private Callback callback; private List<Item> items = new ArrayList<Item>(); public FlipAdapter(Context context) { inflater = LayoutInflater.from(context); for(int i = 0 ; i<10 ; i++){ items.add(new Item()); } } public void setCallback(Callback callback) { this.callback = callback; } @Override public int getCount() { return items.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return items.get(position).getId(); } @Override public boolean hasStableIds() { return true; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if(convertView == null){ holder = new ViewHolder(); convertView = inflater.inflate(R.layout.page, parent, false); holder.text = (TextView) convertView.findViewById(R.id.text); holder.firstPage = (Button) convertView.findViewById(R.id.first_page); holder.lastPage = (Button) convertView.findViewById(R.id.last_page); holder.firstPage.setOnClickListener(this); holder.lastPage.setOnClickListener(this); convertView.setTag(holder); }else{ holder = (ViewHolder) convertView.getTag(); } //TODO set a text with the id as well holder.text.setText(items.get(position).getId()+":"+position); return convertView; } static class ViewHolder{ TextView text; Button firstPage; Button lastPage; } @Override public void onClick(View v) { switch(v.getId()){ case R.id.first_page: if(callback != null){ callback.onPageRequested(0); } break; case R.id.last_page: if(callback != null){ callback.onPageRequested(getCount()-1); } break; } } public void addItems(int amount) { for(int i = 0 ; i<amount ; i++){ items.add(new Item()); } notifyDataSetChanged(); } public void addItemsBefore(int amount) { for(int i = 0 ; i<amount ; i++){ items.add(0, new Item()); } notifyDataSetChanged(); } }