高模倣ニュースチュートリアル-buttonを追加してより多くのデータをロード(9)
2890 ワード
buttonはlistviewの一番下にあるaddFooterviewを利用してbuttonレイアウトを追加します
レイアウトの内容
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(); } };
今回は変更が多いので、皆さんはやはり私のソースコードを見てください............
クリックしてソースをダウンロード
レイアウトの内容
<?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
}
実は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(); } };
今回は変更が多いので、皆さんはやはり私のソースコードを見てください............
クリックしてソースをダウンロード