package jp.mydns.sys1yagi.android.listviewanimationssample;
import jp.mydns.sys1yagi.android.listviewanimationssample.RssList.Feed;
import jp.mydns.sys1yagi.android.listviewanimationssample.RssList.Item;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.ListFragment;
import android.support.v4.app.LoaderManager;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.haarman.listviewanimations.itemmanipulation.OnDismissCallback;
import com.haarman.listviewanimations.itemmanipulation.SwipeDismissAdapter;
import com.haarman.listviewanimations.swinginadapters.prepared.AlphaInAnimationAdapter;
public class ListViewAnimationsSampleActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_view_animations_sample);
}
public static class CardFragment extends ListFragment implements
LoaderCallbacks<RssList> {
public static final String RSS_FEED = "rss_feed";
private RssList mRssList;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getListView().setDivider(null);
LoaderManager manager = getActivity().getSupportLoaderManager();
Bundle args = new Bundle();
Feed feed = new Feed("はてなブックマーク - 新着エントリー",
"http://b.hatena.ne.jp/entrylist?sort=hot&threshold=500&mode=rss");
args.putSerializable(RSS_FEED, feed);
manager.initLoader(0, args, this);
}
@Override
public Loader<RssList> onCreateLoader(int id, Bundle bundle) {
return new RssLoader(getActivity(),
(Feed) bundle.getSerializable(RSS_FEED));
}
@Override
public void onLoaderReset(Loader<RssList> arg0) {
}
@Override
public void onLoadFinished(Loader<RssList> loader, RssList result) {
mRssList = result;
ListView listView = getListView();
final RssListAdapter adapter = new RssListAdapter(getActivity(),
result.mItems);
SwipeDismissAdapter swipeDismissAdaper = new SwipeDismissAdapter(
adapter, new OnDismissCallback() {
@Override
public void onDismiss(AbsListView listView,
int[] reverseSortedPositions) {
for (int position : reverseSortedPositions) {
adapter.remove(position);
}
}
});
AlphaInAnimationAdapter alphaInAnimationAdapter = new AlphaInAnimationAdapter(
swipeDismissAdaper);
alphaInAnimationAdapter.setAbsListView(listView);
setListAdapter(alphaInAnimationAdapter);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> listView, View view,
int pos, long id) {
Item item = (Item) listView.getAdapter().getItem(pos);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(item.url));
startActivity(intent);
}
});
}
}
}