package org.techbooster.app.abc2013autumn;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.text.Html;
import android.text.method.LinkMovementMethod;
import android.text.method.MovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
public class AppListFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
int padding = (int) (getResources().getDisplayMetrics().density * 8); // 8dip
ListView listView = getListView();
listView.setPadding(padding, 0, padding, 0);
listView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
listView.setDivider(null);
LayoutInflater inflater = LayoutInflater.from(getActivity());
View header = inflater.inflate(R.layout.list_header_footer, listView, false);
View footer = inflater.inflate(R.layout.list_footer, listView, false);
TextView tv = (TextView) footer.findViewById(R.id.footer);
String str = getResources().getString(R.string.footer);
MovementMethod method = LinkMovementMethod.getInstance();
tv.setMovementMethod(method);
CharSequence html = Html.fromHtml(str);
tv.setText(html);
listView.addHeaderView(header, null, false);
listView.addFooterView(footer, null, false);
setTrack(7);
}
public class CardListAdapter extends ArrayAdapter<Track> {
LayoutInflater mInflater;
int mLastAnimationPosition = 0;
public CardListAdapter(Context context) {
super(context, 0);
mInflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_item_card, parent, false);
}
Track info = getItem(position);
ImageView iv = (ImageView) convertView.findViewById(R.id.icon);
TextView tv = (TextView) convertView.findViewById(R.id.title);
tv.setText(info.title);
tv = (TextView) convertView.findViewById(R.id.time);
tv.setText(info.time);
if(position==0){
iv.setImageResource(android.R.drawable.ic_menu_info_details);
tv = (TextView) convertView.findViewById(R.id.sub);
tv.setText("");
}else{
iv.setImageResource(R.drawable.ic_launcher);
tv = (TextView) convertView.findViewById(R.id.sub);
String body = new String();
for(Person person : info.persons){
body += person.name + "\n" + person.org + "\n" ;
}
tv.setText(body + "\n" + info.disc);
}
if (mLastAnimationPosition < position) {
Animation animation = AnimationUtils.loadAnimation(getContext(), R.anim.motion);
convertView.startAnimation(animation);
mLastAnimationPosition = position;
}
return convertView;
}
}
public List<Track> setTrack(int index){
int res = R.array.track7;
if(index == 0)res = R.array.track0;
if(index == 1)res = R.array.track1;
if(index == 2)res = R.array.track2;
if(index == 3)res = R.array.track3;
if(index == 4)res = R.array.track4;
if(index == 5)res = R.array.track5;
if(index == 6)res = R.array.track6;
if(index == 7)res = R.array.track7;
List<Track> trackInfo = new ArrayList();
TypedArray typedArray = getResources().obtainTypedArray(res);
int length = typedArray.length();
for(int i=0; i<length; i++){
int resourceId = typedArray.getResourceId(i, 0);
String[] array = getResources().getStringArray(resourceId);
Track track = new Track();
track.time = array[0];
track.title = array[1];
if(array.length != 2){
track.disc = array[2];
track.persons.add(new Person(array[3], array[4]));
for(int j=5; j < array.length ; j+=2){
track.persons.add(new Person(array[j], array[j+1]));
}
}
trackInfo.add(track);
}
CardListAdapter adapter = new CardListAdapter(getActivity());
if (trackInfo != null) {
for (Track info : trackInfo) {
adapter.add(info);
}
}
setListAdapter(adapter);
return trackInfo;
}
public class Track{
public String time;
public String title;
public String disc;
public List<Person> persons = new ArrayList();
}
public class Person{
public String name;
public String org;
Person(String n, String o){
name = n;
org = o;
}
}
}