package com.heyzap.sdk;
import java.util.List;
import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Filter;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.ListView;
public class FeedView extends ListView {
protected FeedAdapter feedAdapter;
private Class<?> clickIntentClass;
private CharSequence filterConstraint;
private boolean empty = true;
private boolean whiteFeedletes;
private Bundle clickExtra = null;
private class ClickListener implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
}
public void setOnClickExtras(Bundle clickExtra) {
this.clickExtra = clickExtra;
}
public void setWhiteFeedlettes(boolean whiteFeedlettes){
this.whiteFeedletes = whiteFeedlettes;
}
public boolean isWhiteFeedlettes(){
return whiteFeedletes;
}
public FeedView(Context context) {
super(context);
init();
}
public FeedView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public FeedView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public FeedView setClickIntentClass(Class<?> clickIntentClass) {
this.clickIntentClass = clickIntentClass;
return this;
}
public void connectAdapter() {
// Set up a feed adapter
if(feedAdapter == null) {
feedAdapter = new FeedAdapter(getContext()){
@Override
public void onNewPosition(int position){
onNewFeedAdapterPosition(position);
}
};
feedAdapter.setFeedView(this);
}
setAdapter(feedAdapter);
}
protected void onNewFeedAdapterPosition(int position){};
public void connectAdapter(List<Feedlette> items) {
// Set up a feed adapter
feedAdapter = new FeedAdapter(getContext(), items);
setAdapter(feedAdapter);
}
public void connectFastAdapter(FastFeedAdapter adapter){
this.setFastScrollEnabled(true);
setAdapter(adapter);
}
public void connectFastAdapter(){
if(feedAdapter == null){
feedAdapter = new FastFeedAdapter(getContext());
}
connectFastAdapter((FastFeedAdapter) feedAdapter);
}
public void connectFastAdapter(List<Feedlette> items) {
// Set up a feed adapter
feedAdapter = new FastFeedAdapter(getContext(), items);
connectFastAdapter((FastFeedAdapter) feedAdapter);
}
public void insert(Feedlette f, int index){
empty = false;
feedAdapter.insert(f, index);
}
public void add(Feedlette f) {
empty = false;
if(feedAdapter != null){
feedAdapter.add(f);
}
//setAdapter(feedAdapter);
}
public void remove(Feedlette f){
if(feedAdapter != null){
feedAdapter.remove(f);
}
}
public Feedlette lastFeedlette() {
int count = feedAdapter.getCount();
if(count == 0) {
return null;
} else {
return feedAdapter.getItem(feedAdapter.getCount() - 1);
}
}
// useful for feedviews with a semi-transparent item "hovering" at the top, e.g. http://cl.ly/image/2d2u0w1P1a3N
public void addHeaderPadding(int dp) {
LinearLayout wrapper = new LinearLayout(this.getContext());
FrameLayout padding = new FrameLayout(this.getContext());
// padding.setText("asdf asdf asdf asdf asdf");
padding.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, Utils.getScaledSize(this.getContext(), dp)));
wrapper.addView(padding);
addHeaderView(wrapper);
}
public boolean isEmpty(){
return empty;
}
public int size(){
return empty ? 0 : feedAdapter.getCount();
}
public void clear() {
empty = true;
if(feedAdapter != null){
feedAdapter = null;
this.connectAdapter();
feedAdapter.clear();
}
}
public void filterBy(CharSequence constraint) {
// Save the constraint for later refreshes
filterConstraint = constraint;
feedAdapter.getFilter().filter(filterConstraint);
}
public void filterBy(CharSequence constraint, Filter.FilterListener onComplete) {
// Save the constraint for later refreshes
filterConstraint = constraint;
feedAdapter.getFilter().filter(filterConstraint, onComplete);
}
public void removeIndex(int i) {
feedAdapter.remove(feedAdapter.getItem(i));
}
public void refresh() {
if(feedAdapter != null) {
// We have to manually refilter, ArrayAdapter<T> is written in
// a way that does not do this.
if(filterConstraint != null){
feedAdapter.getFilter().filter(filterConstraint);
}
feedAdapter.notifyDataSetChanged();
}
}
private void init() {
setItemsCanFocus(true);
setScrollingCacheEnabled(true);
setVerticalFadingEdgeEnabled(false);
setOnItemClickListener(new ClickListener());
setDividerHeight(0);
setSelector(android.R.color.transparent);
}
}