package com.cnblogs.android;
import java.util.ArrayList;
import java.util.List;
import android.content.Intent;
import android.content.res.Resources;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.cnblogs.android.adapter.RssItemsAdapter;
import com.cnblogs.android.core.RssItemHelper;
import com.cnblogs.android.entity.RssItem;
/**
* ������Ŀ
* @author walkingp
* @date:2012-3
*
*/
public class RssItemsActivity extends SuperView {
List<RssItem> listBlog = new ArrayList<RssItem>();
ListView listView;
private RssItemsAdapter adapter;// ����Դ
List<RssItem> listRss;
String itemTitle, itemUrl;
Button btnBack;// ����
ProgressBar bodyProgressBar;// ����ListView���ؿ�
ImageButton btnRefresh;// ˢ�°�ť
ProgressBar topProgressBar;// ���ذ�ť
TextView txtAppTitle;// ����
TextView txtNoData;// û������
Resources res;// ��Դ
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.rss_list_layout);
res = this.getResources();
InitialControls();
InitialData();
BindControls();
new PageTask().execute();
}
/**
* ��ʼ���б�
*/
private void InitialControls() {
listView = (ListView) findViewById(R.id.rss_list);
bodyProgressBar = (ProgressBar) findViewById(R.id.rssList_progressBar);
btnBack = (Button) findViewById(R.id.rss_button_back);
btnRefresh = (ImageButton) findViewById(R.id.rss_refresh_btn);
topProgressBar = (ProgressBar) findViewById(R.id.rss_progressBar);
txtAppTitle = (TextView) findViewById(R.id.txtAppTitle);
txtNoData = (TextView) findViewById(R.id.txtNoData);
}
/**
* ��ʼ������
*/
void InitialData() {
itemTitle = getIntent().getStringExtra("title");
itemUrl = getIntent().getStringExtra("url");
}
/**
* ���¼�
*/
private void BindControls() {
txtAppTitle.setText(itemTitle);
// ����
btnBack.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
RssItemsActivity.this.finish();
}
});
// ˢ��
btnRefresh.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new PageTask().execute();
}
});
// �����ת
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
TextView tvTitle = (TextView) v
.findViewById(R.id.recommend_text_title);
TextView tvContent = (TextView) v
.findViewById(R.id.recommend_text_full_text);
TextView tvLink = (TextView) v
.findViewById(R.id.recommend_text_url);
String title = tvTitle.getText().toString();
String content = tvContent.getText().toString();
String link = tvLink.getText().toString();
Intent intent = new Intent();
intent.setClass(RssItemsActivity.this, RssDetailActivity.class);
Bundle bundle = new Bundle();
bundle.putString("cate",itemTitle);
bundle.putString("title", title);
bundle.putString("content", content);
bundle.putString("link", link);
intent.putExtras(bundle);
startActivity(intent);
}
});
// �����¼�
listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.blog_list_contextmenu, menu);
menu.setHeaderTitle(R.string.menu_bar_title);
}
});
}
/**
* �첽����
*
* @author walkingp
*
*/
public class PageTask extends AsyncTask<String, Integer, List<RssItem>> {
@Override
protected List<RssItem> doInBackground(String... params) {
List<RssItem> listRss = RssItemHelper.GetRssList(itemUrl);
return listRss;
}
@Override
protected void onPostExecute(List<RssItem> result) {
bodyProgressBar.setVisibility(View.GONE);
topProgressBar.setVisibility(View.GONE);
btnRefresh.setVisibility(View.VISIBLE);
if (result == null || result.size() == 0) {
txtNoData.setVisibility(View.VISIBLE);
} else {
adapter = new RssItemsAdapter(getApplicationContext(), result);
listView.setAdapter(adapter);
}
}
@Override
protected void onPreExecute() {
bodyProgressBar.setVisibility(View.VISIBLE);
topProgressBar.setVisibility(View.VISIBLE);
btnRefresh.setVisibility(View.GONE);
}
}
}