androidç¹å»å表ï¼å¨ææ¾ç¤ºå¯¹åºçå
容ï¼å¯ä»¥ç¹å»ä¹åï¼è·³è½¬å°è¯¦æ
页é¢è¿è¡æ¾ç¤ºï¼ä¸»è¦æ¯ç¨intentè¿è¡è·³è½¬ï¼ä¹å¯ä»¥æºå¸¦æ°æ®bundleï¼key-valueé®å¼å¯¹æ¥ä¿åã代ç å¦ä¸ï¼
public class HandlerDemo extends Activity implements OnScrollListener {
private ListView mListView;
LinearLayout loadingLayout;
private Thread mThread;
private ListViewAdapter adapter;
private int startIndex = 1;// ä»ç¬¬1æ¡å¼å§
private int size = 10;// æ¯æ¬¡ä¸è½½åæ¡æ°æ®
private List<News> newsList;
List<Map<String, String>> data ;
/*
* 设置å¸å±æ¾ç¤ºå±æ§
*/
private LayoutParams mLayoutParams = new LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
private LayoutParams ffLayoutParams = new LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.FILL_PARENT);
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.news_main);
data=new ArrayList<Map<String, String>>();
addView();
}
private void addView() {
if (startIndex == 1) {
newsList = new ArrayList<News>();
newsList = getNewsList();
}
getdata(newsList);
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.HORIZONTAL);
progressBar = new ProgressBar(this);
layout.addView(progressBar, mLayoutParams);
TextView textView = new TextView(this);
textView.setText("å è½½ä¸...");
textView.setGravity(Gravity.CENTER_VERTICAL);
layout.addView(textView, ffLayoutParams);
layout.setGravity(Gravity.CENTER);
loadingLayout = new LinearLayout(this);
loadingLayout.addView(layout, mLayoutParams);
loadingLayout.setGravity(Gravity.CENTER);
// å¾å°ä¸ä¸ªListViewç¨æ¥æ¾ç¤ºæ¡ç®
mListView = (ListView) findViewById(R.id.listView);
mListView.addFooterView(loadingLayout);
adapter = new ListViewAdapter();
mListView.setAdapter(adapter);
mListView.setOnScrollListener(this);
mListView.setTextFilterEnabled(true);
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
// TODO Auto-generated method stub
if (firstVisibleItem + visibleItemCount == totalItemCount) {
if (mThread == null || !mThread.isAlive()) {
mThread = new Thread() {
@Override
public void run() {
newsList = new ArrayList<News>();
newsList = getNewsList();
getdata(newsList);
Message msg = new Message();
msg.what = 1;
handler.sendMessage(msg);
}
};
mThread.run();
}
}
}
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
if (msg.what == 1) {
startIndex = startIndex + size;
Log.v("startindex", startIndex + "");
mListView.removeFooterView(loadingLayout);
mThread.stop();
adapter.count += size;
adapter.notifyDataSetChanged();
return;
}
}
};
class ListViewAdapter extends BaseAdapter {
int count = 10;
@Override
public int getCount() {
// TODO Auto-generated method stub
return count;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
convertView = LayoutInflater.from(getApplicationContext()).inflate(
R.layout.news_item, null);
TextView textView = (TextView) convertView
.findViewById(R.id.textNewsTitle);
textView.setText((data.get(position)).get("title"));
return convertView;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
// TODO Auto-generated method stub
}
private List<Map<String, String>> getdata(List<News> list) {
if (list == null)
return null;
for (News news : list) {
Map<String, String> map = new HashMap<String, String>();
map.put("title", news.getTitle());
data.add(map);
}
return data;
}
/*
* è·åç½ç»æ°æ® 注ï¼ææ¯è®¿é®æ¬æºçä¸ä¸ªæ°é»æå¡ï¼ä½¿ç¨asp.netææ¯æ¥å®ç°ç
* è¿ä¸ªæ¯é¡¹ç®æ¯ä¸ä¸ªåºäºandroidçèµè®¯ææ¥è½¯ä»¶
*/
private List<News> getNewsList() {
String path = "
http://10.0.2.2/getNewsList.aspx"; String xmlStr = "<?xml version='1.0' encoding='utf-8'?><source><categoryIds>1,3,7</categoryIds><startIndex>"
+ startIndex
+ "</startIndex><detail>2</detail><count>"
+ size
+ "</count></source>";
NewsConnector newsConnector = new NewsConnector();
List<News> list = new ArrayList<News>();
list = newsConnector.getNewsList(path, xmlStr);
return list;
}
}