高模倣ニュースチュートリアル-buttonを追加してより多くのデータをロード(9)

2890 ワード

buttonはlistviewの一番下にあるaddFooterviewを利用してbuttonレイアウトを追加します
レイアウトの内容
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/loadmore_layout"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	>
	<Button
		android:id="@+id/loadmore_btn"
		android:layout_width="fill_parent"
		android:layout_height="40.0dip"
		android:layout_marginTop="0.0dip"
		android:layout_centerHorizontal="true"
		android:background="@drawable/newslist_item_selector"
		android:textSize="18.0dip"
		android:textColor="@color/loadmore_btn_selector"
		android:text=" "
		 />
	<ProgressBar
		android:id="@+id/loadmore_progress"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:visibility="gone"
		android:layout_marginRight="15.0dip"
		android:layout_alignRight="@id/loadmore_btn"
		android:layout_centerVertical="true"
		style="?android:attr/progressBarStyleSmall" />
	<TextView
		android:id="@+id/loadmore_txt"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:layout_below="@id/loadmore_btn" 
		android:enabled="false"
		android:textSize="12.0dip"
		android:background="@color/white"
		android:focusable="false"
		android:focusableInTouchMode="false"
		android:visibility="invisible"
		android:text=" "
		android:editable="false"
		/>
</RelativeLayout>
サーバ側のデータが10個しかないことを考慮して、一度に5個のデータをロードします.
    private final int NEWSCOUNT = 5;//ニュース数を返す
次にLayoutInflaterを定義してレイアウトに参加する準備をします
    private LayoutInflater mInflater;
次にgetSpeCateNewsに2つのパラメータを追加します.1つはどこからロードを開始したのか、1つは最初のロードか
private void getSpeCateNews(int cid,List>newsList,int startnid,Boolean firstTimes){if(firstTimes){//初めてなら集合中のデータnewsList.clear();        }
}
実はurlパラメータも変更します
    String url = "http://192.168.1.12:8080/web/getSpecifyCategoryNews?cid="                + cid + "&startnid="+startnid+"&count="+NEWSCOUNT+"";
最後にbuttonをインスタンス化してクリックイベントに追加
        Button loadMoreBtn = (Button)findViewById(R.id.loadmore_btn);         loadMoreBtn.setOnClickListener(loadMoreListener);
private OnClickListener loadMoreListener=new OnClickListener(){@Override public void onClick(View v){//この欄の下のニュースgetSpeCateNews(mCid,mNewsData,mNewsData.size()、falseを取得する//ListViewにmNewsListAdapter.notifyDataSetChanged();        }     };
今回は変更が多いので、皆さんはやはり私のソースコードを見てください............
クリックしてソースをダウンロード