package com.cinla.ringtone;
import java.lang.reflect.Array;
import java.util.ArrayList;
import com.latest.ringtone.R;
import android.app.ListActivity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
public class TopChartListActivity extends ListActivity {
private ProgressBar mProgressBar;
private TextView mSearchMessage;
private Button mRetryButton;
private int mChartType;
private String mChartTypeName;
private ArrayList<TopItem> mTopItemList;
private TopItemAdapter mAdapter;
private static FetchTopListTask sFetchTopListTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.top_chart_page);
AdListener.createAds(this);
mProgressBar = (ProgressBar) findViewById(R.id.search_progress);
mSearchMessage = (TextView) findViewById(R.id.search_message);
mRetryButton = (Button) findViewById(R.id.retry_button);
mRetryButton.setOnClickListener(new OnRetryClickListener());
mChartType = getIntent().getIntExtra(Constant.CHART_TYPE, 0);
Utils.D("********************************type: "+mChartType);
mChartTypeName = Constant.CHART_TYPE_NAME[mChartType];
mAdapter = new TopItemAdapter(this, R.layout.top_track_item);
getListView().setAdapter(mAdapter);
if (sFetchTopListTask != null) {
sFetchTopListTask.cancel(true);
sFetchTopListTask = null;
}
sFetchTopListTask = new FetchTopListTask();
sFetchTopListTask.execute(null);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
SearchListActivity.startQeuryByKey(TopChartListActivity.this, mTopItemList.get(position).getTitle(), true);
}
private void setLoadingStatus() {
mProgressBar.setVisibility(View.VISIBLE);
mSearchMessage.setVisibility(View.VISIBLE);
mSearchMessage.setText(getString(R.string.loading)+" "+mChartTypeName);
mRetryButton.setVisibility(View.GONE);
}
private void setErrorStatus() {
mProgressBar.setVisibility(View.GONE);
mSearchMessage.setVisibility(View.VISIBLE);
mSearchMessage.setText(R.string.loading_error_message);
mRetryButton.setVisibility(View.VISIBLE);
}
private class FetchTopListTask extends AsyncTask<Void, Void, ArrayList<TopItem>> {
@Override
protected void onPreExecute() {
setLoadingStatus();
}
@Override
protected ArrayList<TopItem> doInBackground(Void... params) {
ArrayList<TopItem> topItemList = null;
try {
ITopChartFetcher fetcher = TopChartFactory.getTopChartFetcher(mChartType);
topItemList = fetcher.getTopItemList();
} catch (Exception e) {
return null;
}
return topItemList;
}
@Override
protected void onPostExecute(ArrayList<TopItem> result) {
Utils.D("result: "+result);
if (result==null || result.size()==0) {
setErrorStatus();
return;
}
if (mAdapter == null) {
mAdapter = new TopItemAdapter(TopChartListActivity.this, R.layout.top_track_item);
}
mTopItemList = result;
mAdapter.notifyDataSetChanged();
}
}
private class TopItemAdapter extends BaseAdapter {
private int mResource;
private LayoutInflater mInflater;
public TopItemAdapter(Context context, int resource) {
mResource = resource;
mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
if (mTopItemList != null) {
return mTopItemList.size();
}
return 0;
}
@Override
public Object getItem(int position) {
if (mTopItemList != null) {
return mTopItemList.get(position);
}
return null;
}
@Override
public long getItemId(int position) {
if (mTopItemList == null) {
return -1;
}
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(mResource, parent, false);
holder.image = (ImageView) convertView.findViewById(R.id.image);
holder.title = (TextView) convertView.findViewById(R.id.title);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
TopItem topItem = mTopItemList.get(position);
holder.title.setText(topItem.getTitle());
if (topItem.getImageUrl()!=null) {
com.cinla.imageloader.ImageLoader.initialize(TopChartListActivity.this);
com.cinla.imageloader.ImageLoader.start(topItem.getImageUrl(), holder.image);
} else {
holder.image.setImageResource(R.drawable.hot);
}
return convertView;
}
}
private static class ViewHolder {
ImageView image;
TextView title;
}
private class OnRetryClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
mAdapter = new TopItemAdapter(TopChartListActivity.this, R.layout.top_track_item);
if (sFetchTopListTask != null) {
sFetchTopListTask.cancel(true);
sFetchTopListTask = null;
}
sFetchTopListTask = new FetchTopListTask();
sFetchTopListTask.execute(null);
}
}
}