package com.marshalchen.common.uimodule.superlistview;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
import android.widget.ListView;
import com.marshalchen.common.uimodule.R;
/**
* Created by kentin on 24/04/14.
*/
public class SuperListview extends BaseSuperAbsListview {
public SuperListview(Context context) {
super(context);
}
public SuperListview(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SuperListview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public ListView getList() {
return (ListView) mList;
}
@Override
protected void initAttrs(AttributeSet attrs) {
super.initAttrs(attrs);
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.superlistview);
try {
mSuperListViewMainLayout = a.getResourceId(R.styleable.superlistview_superlv_mainLayoutID, R.layout.super_list_view_view_progress_listview);
} finally {
a.recycle();
}
}
@Override
protected void initAbsListView(View v) {
View listView = v.findViewById(android.R.id.list);
if (listView instanceof ListView)
mList = (ListView) listView;
else
throw new IllegalArgumentException("SuperListView works with a List!");
if (mList != null) {
mList.setClipToPadding(mClipToPadding);
//getList().setDivider(mDivider);
getList().setDividerHeight((int) mDividerHeight);
mList.setOnScrollListener(this);
if (mSelector != 0)
mList.setSelector(mSelector);
if (mPadding != -1.0f) {
mList.setPadding(mPadding, mPadding, mPadding, mPadding);
} else {
mList.setPadding(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom);
}
if (mScrollbarStyle != -1)
mList.setScrollBarStyle(mScrollbarStyle);
}
}
@Override
public void setAdapter(ListAdapter adapter) {
getList().setAdapter(adapter);
super.setAdapter(adapter);
}
@Override
public void clear() {
getList().setAdapter(null);
}
public void setupSwipeToDismiss(final SwipeDismissListViewTouchListener.DismissCallbacks listener, final boolean autoRemove) {
SwipeDismissListViewTouchListener touchListener =
new SwipeDismissListViewTouchListener((ListView) mList, new SwipeDismissListViewTouchListener.DismissCallbacks() {
@Override
public boolean canDismiss(int position) {
return listener.canDismiss(position);
}
@Override
public void onDismiss(ListView listView, int[] reverseSortedPositions) {
if (autoRemove) {
for (int position : reverseSortedPositions) {
((ArrayAdapter) mList.getAdapter()).remove(mList.getAdapter().getItem(position));
}
((ArrayAdapter) mList.getAdapter()).notifyDataSetChanged();
}
listener.onDismiss(listView, reverseSortedPositions);
}
});
mList.setOnTouchListener(touchListener);
}
}