最近、プロジェクトのニーズが1人のスライドへのニーズと、その後は、そのページのデータをロードし、この1、viewpager行われ、後に出て作られた、あなたと共有に自分のアイデアを置くことにしました。
やりたいリストビューは、アダプタにデータをロードであるとして実際には、あなたは、最初のビューの各項目のスタイルを設定し、viewpager置くことができます。本論文の主なアイデアは、リストビュービューにすべての項目を考えることで、
instantiateItem(のViewGroup容器、INTポジション)法により、次いで、各ページにスライドするとき、ビュー内の各項目にそれぞれセットリストを閲覧setPrimaryItem(ビューコンテナ、INTを実行する
場合、位置、オブジェクトObject)メソッドを負荷データ。
これは主にadaperコンストラクタコンテキストを取得し、いくつかのパラメータを渡しています
公共ViewPagerAdapter(コンテキスト・コンテキスト、フロートサイズ、AQuery水溶液、列区分){ mInflater = LayoutInflater.from(コンテキスト)。 this.contextは、コンテキストを=。 TEXTSIZE =サイズ; this.aq =新しいAQuery(this.context)。 this.categoryId =区分。 }
adpaerでの活動に設定してください
=新しい新しいViewPagerAdapter pagerAdapter(getActivity()、mTextSize、AQ、区分); mPager.setAdapter(pagerAdapter); //すべてのIDリストは、アダプタに送信さ pagerAdapter.setNewsId(newsIdList); // itemposition最初のページがViewPager表示する mPagerを。 setCurrentItem(itemPosition)。
各項目は、ビューのパターン(のArrayList <表示>)、(ブール値は[])positionValue状況毎日のニュースをロードするの景色にロードされますの下には、不正スタートがロードされていない表現され、以下のキーがviews.addです(setviewコマンド());残りはあまり気にしません
/ ** *设置新闻的条数、在NewsDetailsContentFragment设置特殊なアダプタ后调用 * @paramリスト * / 公共ボイドsetNewsId(のArrayList <ストリング>のリスト){ idlList =リスト。 positionValue =新しいブール[idlList.size()]。 eachItemPicNum =新しいINT [idlList.size()]。 以下のために(INT iが= 0; I <positionValue.length; I ++){ positionValue [I] = FALSE; [I] = 0 eachItemPicNum。 } ため(INT iは= 0; I <idlList.size(); I ++){ views.add(setviewコマンド())。 } shareStr =新しいString [views.size()]。 shareImg =新しいString [views.size()]。 notifyDataSetChanged(); }
ここでリターンが表示setviewコマンド方式で、我々はそれがいくつかのTextView内部統制やギャラリー名を格納するためのクラスとして、各項目viewpagerHolderビューを保って表示します
プライベートビューsetviewコマンド(){ // TODO自動生成方法スタブ 最終ViewPagerHolderホルダ=新しいViewPagerHolder()。 ビュービュー= mInflater.inflate(R.layout.news_datails_viewpager_item、NULL); holder.mTitle =(のTextView)view.findViewById(R.id.text_news_detail_title)。 holder.mAuthor =(のTextView)view.findViewById(R.id.text_news_detail_author)。 holder.mData =(のTextView)view.findViewById(R.id.text_news_detail_data)。 holder.mGallery =(ギャラリー)view.findViewById(R.id.gallery)。 holder.mGallery.setVisibility(View.GONE)。 ビューを返します。 }
ここで重要な部分であります
@Override 公共INT同様にgetCount(){ //生成されるメソッドスタブTODO自動の 戻りviews.size(); } @Override 公共ボイドdestroyItem(ビューコンテナ、INT位置、オブジェクトオブジェクト){ // TODO自動生成されたメソッドスタブ (( ViewPager)コンテナ).removeView(views.get(位置)); } / ** *ページごとに実行されるメソッドへのジャンプ * / @Override 公共ボイドsetPrimaryItem(ビューコンテナ、INT位置、オブジェクトオブジェクト){ / /この貫通スライドにグローバル変数にこの位置の割り当ては知っているだろうどのページ setPosition(位置); //メソッドの実装後の各ニュースネットワークは、実行getNewsDataではないことを保証するために、一度だけ要求します IF(positionValue [位置] == falseに){ //これは、ネットワークデータ取得方法である getNewsData(区分位置)を、 IF(Logs.IS_DEBUG){ Logs.v( "郭"、「ネットワーク要求...... .......「+ itemPosttion); } positionValue [位置] = trueに; } } @Override パブリックオブジェクトinstantiateItem(のViewGroupコンテナ、INT位置){ // TODO自動生成されたメソッドスタブ ((ViewPager)コンテナ)。 addView(views.get(位置)); //ビューの各項目のためだけのビューのビューに維持される 戻りviews.get(位置); } @Override 公共ボイドstartUpdate(のViewGroup容器){ // TODO自動生成方法スタブ super.startUpdate(容器) } @Override isViewFromObjectブールパブリック(表示arg0に、オブジェクトARG1){ // TODO自動生成方法スタブ 戻りarg0に== ARG1。 }
setPrimaryItem()このメソッドは、キーポイントであり、スライド位置は、このインデックスに動的にデータをロードするための良い解決策であることができるインデックススライドへの、知ることができることによって、この方法を実行します。ここでは、データを設定する方法があります
IF(!news.getTitle()= NULL){ ((のTextView)views.get(itemPosttion).findViewById(R.id 。text_news_detail_title))のsetText(news.getTitle())。 } //セットの著者 であれば(!のisEmpty(news.getAuthor())||!news.getAuthor()。等号( "ヌル")){ ((のTextView)views.get(itemPosttion).findViewById(R.id。 。text_news_detail_author))のsetText( "本报讯"); }他{ ((のTextView)views.get(itemPosttion).findViewById(R.id。 text_news_detail_author))のsetText( "本报讯")。 } //セットデータ IF(news.getPublishDate()!= NULL){ ストリングpublishDate = setDataFormat(news.getPublishDate())。 ((のTextView)views.get(itemPosttion).findViewById(R.id。 text_news_detail_data))のsetText(publishDate)。 }