在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → Android中通过ViewPager动态加载数据完整示例源码下载

Android中通过ViewPager动态加载数据完整示例源码下载

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:18.64M
  • 下载次数:163
  • 浏览次数:5462
  • 发布时间:2014-04-05
  • 实例类别:Android平台开发
  • 发 布 人:crazycode
  • 所需积分:2
 相关标签: Android 下载

实例介绍

【实例简介】
【实例截图】

【核心代码】

package com.pay.hzdaily.ui.adapter;

import java.io.File;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.WeakHashMap;

import org.json.JSONObject;
import com.androidquery.AQuery;
import com.androidquery.callback.AjaxCallback;
import com.androidquery.callback.AjaxStatus;
import com.androidquery.callback.BitmapAjaxCallback;
import com.pay.hzdaily.R;
import com.pay.hzdaily.context.Commen;
import com.pay.hzdaily.context.Constants;
import com.pay.hzdaily.model.db.provider.CategoryProvider;
import com.pay.hzdaily.model.db.provider.NewsProvider;
import com.pay.hzdaily.model.entity.base.Category;
import com.pay.hzdaily.model.entity.base.Image;
import com.pay.hzdaily.model.entity.base.News;
import com.pay.hzdaily.model.http.DownloadProgressListener;
import com.pay.hzdaily.model.http.FileDownloader;
import com.pay.hzdaily.model.http.HttpApi;
import com.pay.hzdaily.ui.NewsDetailsContentFragment;
import com.pay.hzdaily.utils.BitmapDecoder;
import com.pay.hzdaily.utils.Logs;
import com.pay.hzdaily.utils.SDCardFileUtils;
import com.pay.hzdaily.utils.Utility;

import android.R.integer;
import android.app.Dialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.WindowManager.LayoutParams;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebSettings.LayoutAlgorithm;
import android.webkit.WebSettings.TextSize;
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class ViewPagerAdapter extends PagerAdapter implements 
	OnItemSelectedListener,OnItemClickListener{

	/**  上下文  **/
	private Context context;
	/**  ID列表  **/
	private ArrayList<String> idlList;
	/**  布局加载器  **/
	private LayoutInflater mInflater;
	/**  views  两端为一个空白view增加反弹效果  **/
	final ArrayList<View> views = new ArrayList<View>();
	/**  分享的图片地址 **/
	private String[] shareImg;
	/**  分享的新闻文字内容   **/
	private String[] shareStr;
	/**  字体大小设置  **/
	private float textSize;
	/**  aq  **/
	private AQuery aq;
	/**  类别  **/
	private String categoryId;
	private CategoryProvider categoryProvider;
	/**  gallery 适配器  **/
	private  NewDetailsGalllery galleryAdapter;
	/** point **/
	private LinearLayout mLayout;
	/**  图片的导航点点  **/
	private Drawable point;
	/**  每条新闻的图片数  **/
	private int[] eachItemPicNum;
	/**  每条新闻是否加载  **/
	private int[] positionValue;
	/**  字体大小设置  **/
	private WebView textSizeView;
	/**  news id  **/
	private String countryNameStr;
	/**  列表名称  **/
	private String posiName;
	/**  区县新闻的区域名称列表   **/
	private ArrayList<String> listName;
	/**  viewpager 索引  **/
	public  int itemPosttion;
	/**  新闻的加载状态  **/
	public static final int NO_LOADED = 0;
	public static final int LOADING = 1;
	public static final int LOADED = 2;
	/** 存储图片信息   **/
	private HashMap<String, List<Image>> map;
	private WebSettings settings;
	private int ToastState=0;
	/**  存放图片文件的文件夹地址  **/
	private String dowloadDir = Environment.getExternalStorageDirectory()
    	  "/hzdaily/newsdetailpic/";
	private WeakHashMap<Integer, Bitmap> mCacheBitmapMap = new 
			WeakHashMap<Integer, Bitmap>();
	private NewsProvider newsProvider = null;
	private boolean isFromCloud = false;
	
	public ViewPagerAdapter(Context context,float size,AQuery aq,
			String categoryId){
		
		mInflater = LayoutInflater.from(context);
		this.context = context;
		textSize = size;
		this.aq = new AQuery(this.context);
		this.categoryId = categoryId;
		dowloadDir = dowloadDir   categoryId  "/";
		if (Logs.IS_DEBUG) {
			
			Logs.v("guo", "......cataid..../." categoryId);
		}
		judeEnvironment();
		categoryProvider = new CategoryProvider(context);
		map = new HashMap<String, List<Image>>();
		newsProvider = new NewsProvider(context);
		
	}
	
	/**
	 * 文件路径判定
	 */
	private void judeEnvironment() {
		// TODO Auto-generated method stub
		//判定SD卡是否插入
		  if (SDCardFileUtils.avaiableSDCard()) {
			  File file = new File(dowloadDir);
			  //如果目录不存在 则创建下载目录
			  if (!file.exists()) {
				  file.mkdirs();
			  }
		}
		  
	}

	@Override
	public int getCount() {
		// TODO Auto-generated method stub
		return views.size();
	}

	@Override
	public void destroyItem(View container, int position, Object object) {
		// TODO Auto-generated method stub
		((ViewPager)container).removeView(views.get(position));
		

	}
	
	/**
	 * 跳转到每个页面都要执行的方法
	 */
	@Override
	public void setPrimaryItem(View container, int position, Object object) {
		// TODO Auto-generated method stub
		setPosition(position);
		//保证每条新闻都只请求一次联网
		if (positionValue[position] == NO_LOADED) {
			positionValue[position] = LOADING;
			Logs.v("guo","idlList.get(position)==" idlList.get(position-1));
			List<News> list = newsProvider.getById(categoryId, idlList.get(position-1));
			if(list != null && list.size()>0) {
				News news = list.get(0);
				Logs.v("guo", "获取数据库" news.toString());
				setNewsInfo(news);
			}else {				
				if (Logs.IS_DEBUG) {
					Logs.v("guo", "联网请求............." itemPosttion);
				}
				LinearLayout layout = (LinearLayout) views.get(itemPosttion).findViewById(R.id.progressBar1);
				layout.setVisibility(View.VISIBLE);
				getNewsData(categoryId, position-1,false);
			}
		}
		//控制弹出toast次数,保证每次页面都只弹出一次
		if (position != 0 && position != positionValue.length-1) {
			ToastState =0;
		}
		if (position == 1) {
		 NewsDetailsContentFragment.setLastBtn(true);
		}else {
			 NewsDetailsContentFragment.setLastBtn(false);
		}
		if (position == idlList.size()) {
			NewsDetailsContentFragment.setNextBtn(true);
		}else {
			NewsDetailsContentFragment.setNextBtn(false);
		}

	}

	@Override
	public Object instantiateItem(ViewGroup container, int position) {
		// TODO Auto-generated method stub
		((ViewPager)container).addView(views.get(position));
	
		return views.get(position);
	}
	
	@Override
	public void startUpdate(ViewGroup container) {
		// TODO Auto-generated method stub
		super.startUpdate(container);
	}
	@Override
	public boolean isViewFromObject(View arg0, Object arg1) {
		// TODO Auto-generated method stub
		return arg0 == arg1;
	}
	@Override
	public void onItemClick(AdapterView<?> arg0, View arg1, int position,
			long arg3) {
		// TODO Auto-generated method stub
		showDialogGallery(position);
	}
	@Override
	public void onItemSelected(AdapterView<?> arg0, View arg1, int position,
			long arg3) {
		// TODO Auto-generated method stub
//		arg1.getParent().requestDisallowInterceptTouchEvent(true);
		NewDetailsGalllery.releaseBitmap(position, position);
		addNavigation(position);
	}
	@Override
	public void onNothingSelected(AdapterView<?> arg0) {
		// TODO Auto-generated method stub
		
	}

	
	
	/**
	 * 设置新闻的条数,在NewsDetailsContentFragment设置adpater后调用
	 * @param list
	 * @param listName 
	 * @param posiName 
	 * @param isFromCloud 
	 */
	public void setNewsId(ArrayList<String> list, String posiName, ArrayList<String> listName, boolean isFromCloud) {
		idlList = list;
		this.posiName = posiName;
		this.listName = listName;
		this.isFromCloud = isFromCloud;
		positionValue = new int[idlList.size() 2];		
		eachItemPicNum = new int[idlList.size() 2];
		for (int i = 0; i < positionValue.length; i  ) {
			positionValue[i] = NO_LOADED;
			eachItemPicNum[i] = 0;
			if (i == 0) {
				positionValue[i] = LOADED;
				eachItemPicNum[i] = 0;
			}
			if (i == positionValue.length -1) {
				positionValue[i] = LOADED;
				eachItemPicNum[i] = 0;
			}
		}
		for (int i = 0; i < idlList.size() 2; i  ) {
			if (i == 0) {
				View view = new View(context);
				views.add(view);
			}else {
				if (i == idlList.size()   1) {
					View view = new View(context);
					views.add(view);
				}else {
					views.add(setView());
				}
			}
		}
		shareStr = new String[views.size()];
		shareImg = new String[views.size()];
		notifyDataSetChanged();
	}
	
	/**
	 * 设置每个页面的索引
	 * @param init
	 */
	public void  setPosition(int init) {
		NewsDetailsContentFragment.itemPosition = init;
		itemPosttion = init;
	}
	
	/**
	 * 获取每个页面的索引
	 * @return
	 */
	public int getPosition() {
		return itemPosttion;
	}
	
	/**
	 * 判断是否为区县新闻
	 * @return boolean
	 */
	private boolean isCountryNews() {
		if (isFromCloud) {
			return false;
		}else {
			
			//区县id的判空处理
			if (posiName.equals("区县新闻") ||posiName.equals("服务资讯")) {			
				return true;
			}else {
				return false;
			}
		}
	}
	


	/**
	 * 判断当前页面的新闻是否加载完毕,加载完毕后方可分享
	 * @return 
	 */
	public boolean getPositionIsLoaded() {
		
		if (positionValue[itemPosttion] == LOADED) {
			
			return true;
		}else {
			
			return false;
		}
		
	}
	/**
	 * 获取新闻数据
	 * @param b  是否是刷新数据
	 */
	private void getNewsData(final String categoryid,final int index, final boolean b) {
		// TODO Auto-generated method stub
		
			aq.ajax(HttpApi.getNewsDetail(
					categoryid,idlList.get(index)), JSONObject.class, 
					new AjaxCallback<JSONObject>(){
				@Override
				public void callback(String url, JSONObject json,
						AjaxStatus status) {
					// TODO Auto-generated method stub
					LinearLayout layout = (LinearLayout) views.get(itemPosttion).findViewById(R.id.progressBar1);
					layout.setVisibility(View.GONE);
					if (null != json && null != json.optJSONObject("news")) {
						
						if (Logs.IS_DEBUG) {							
							Logs.v("guo", "......................"  
									"...数据获取成功.." idlList.get(index) json.toString());
							Logs.v("guo", "系统版本=" String.valueOf(Commen.getSystemVersion()));
							Logs.v("guo", "id=" idlList.get(index));
						}
						Category vCategory = new Category(); 
						vCategory.setId(categoryid);
						News news = new News().createFromApi(
								json.optJSONObject("news"));
						news.setCategory(vCategory);
						newsProvider.store(news);
						newsProvider.close();
						setNewsInfo(news);
						((TextView)views.get(itemPosttion).findViewById(R.id.text_warning)).
						setVisibility(View.GONE);
					}else {
						if (b) {
							
						}else {
							//如果没有获取到数据就提示加载失败
							((TextView)views.get(itemPosttion).findViewById(R.id.text_warning)).
								setVisibility(View.VISIBLE);
							WebView webView =((WebView)views.get(itemPosttion).findViewById(R.id.
									text_news_datails_content));
							webView.setBackgroundColor(Color.parseColor("#ebebeb"));
						}
					}
					
				}

				
			});
		
	}
	/**
	 * 设置文章的内容
	 * @param news
	 */
	private void setNewsInfo(News news) {
		// TODO Auto-generated method stub
		// set title
		if (news.getTitle() != null) {
			((TextView)views.get(itemPosttion).findViewById(R.id.
					text_news_detail_title)).setText((Html.fromHtml(news.getTitle().trim())));
		}
		
		//set author
//		if (!isEmpty(news.getAuthor()) || !news.getAuthor().equals("null")) {
//			((TextView)views.get(itemPosttion).findViewById(R.id.
//					text_news_detail_author)).setText("本报讯");
//		}else {
//			((TextView)views.get(itemPosttion).findViewById(R.id.
//					text_news_detail_author)).setText("本报讯");
//		}
		// set data
		if (news.getPublishDate() != null) {
			
			String publishDate = Utility.setDataFormat(news.getPublishDate());							
			((TextView)views.get(itemPosttion).findViewById(R.id.
					text_news_detail_data)).setText(publishDate);
		}
		
		//区县新闻的城市名字
		Button countryName =  ((Button)views.get(itemPosttion).findViewById(
				R.id.text_news_detail_country));
		if (isCountryNews()) {
			countryName.setVisibility(View.VISIBLE);
			if (listName != null) {
				String str = listName.get(itemPosttion-1);
				countryName.setText(str);
				
			}
		}else {
			countryName.setVisibility(View.GONE);
		}
		
		//set content
		if (news.getContent() != null) {
			WebView webView =((WebView)views.get(itemPosttion).findViewById(R.id.
					text_news_datails_content));
			webView.getSettings().setDefaultTextEncodingName("UTF-8");
			settings = webView.getSettings();
			settings.setJavaScriptEnabled(true);
			settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
			webView.clearCache(true);
			settings.setSupportZoom(true);
			settings.setTextSize(getLocalTextSize(textSize));
			webView.setBackgroundColor(Color.parseColor("#ebebeb"));
			webView.loadDataWithBaseURL(null, Utility.ToDBC(news.getContent()), 
					"text/html", "UTF-8", null);		
		}
		
		//set gallery
		if (news.getImages() != null) {
			Gallery gallery;
			gallery = (Gallery)views.get(itemPosttion).findViewById(
					R.id.gallery);
			galleryAdapter = new NewDetailsGalllery(context,aq,news.getImages(),categoryId, mCacheBitmapMap,false);
			gallery.setAdapter(galleryAdapter);
			map.put(String.valueOf(itemPosttion), news.getImages());
			eachItemPicNum[itemPosttion] = news.getImages().size();
			shareImg[itemPosttion] = Constants.host   news.getImages().get(0).getImgUrl(); 
			gallery.setOnItemSelectedListener(ViewPagerAdapter.this);
			gallery.setOnItemClickListener(ViewPagerAdapter.this);
			gallery.setVisibility(View.VISIBLE);
		}else {
			shareImg[itemPosttion] = "nopic";
		}
		notifyDataSetChanged();
		
		//set share data
		if (news.getContent()!= null) {
			
			if ( news.getContent().length()<120) {
				shareStr[itemPosttion] = news.getTitle()   news.getContent().
				substring(0, news.getContent().length()) ".....";
			}else {
				
				shareStr[itemPosttion] = news.getTitle()   news.getContent().substring(0, 120) ".....";
			}
		}
		positionValue[itemPosttion] = LOADED;
		
	}
	
	

	/**
	 * 获得每个新闻的view,后面再加载数据进去
	 * @param news
	 * @return
	 */
	private View setView() {
		// TODO Auto-generated method stub
		
		final ViewPagerHolder holder = new ViewPagerHolder();
		View view =   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.mWarning = (TextView)view.findViewById(R.id.
				text_warning);
		holder.mGallery = (Gallery)view.findViewById(R.id.gallery);
	//	holder.mGallery.getParent().requestDisallowInterceptTouchEvent(true);
		holder.mGallery.setVisibility(View.GONE);
		
//		//viewpager 和 galler 焦点问题解决
		
		
		//添加导航点点
		holder.mpintLayout = (LinearLayout)view.findViewById(R.id.layout_point);
		holder.mpintLayout.setVisibility(View.GONE);
		point = context.getResources().getDrawable(R.drawable.icon_unselect);		
		holder.mContent = (WebView)view.findViewById(R.id.
				text_news_datails_content);
		holder.mContent.setBackgroundColor(Color.parseColor("#ebebeb"));
		return view;
	}
	
	/**
	 * show a Gallery as Dialog Way
	 */
	private void showDialogGallery(final int position) {
		// TODO Auto-generated method stub
		// Layout Loader
		final LayoutInflater inflater = (LayoutInflater)context.
			getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		//DialogView
		final View mView  = inflater.inflate(
				R.layout.news_details_gallery_asdialog, null);
		Dialog mDialog = new Dialog(context, R.style.gallery_dialog);
		mDialog.getWindow().getAttributes().flags = 
			android.view.WindowManager.LayoutParams.FLAG_DIM_BEHIND;
		mDialog.getWindow().getAttributes().dimAmount= 0.7f;
		mDialog.getWindow().getAttributes().alpha = 1.0f;
		final LayoutParams dialogLayoutParams = new LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		mDialog.setContentView(mView, dialogLayoutParams);
		mDialog.setCanceledOnTouchOutside(true);
		Gallery gallery = (Gallery)mView.findViewById(
				R.id.gallery_asdialog);
		final NewDetailsGalllery mAdapter = new NewDetailsGalllery(context, aq, 
				map.get(String.valueOf(itemPosttion)),categoryId,mCacheBitmapMap,true);
		gallery.setOnItemSelectedListener(new OnItemSelectedListener() {

			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				// TODO Auto-generated method stub
				NewDetailsGalllery.releaseBitmap(arg2,position);
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				// TODO Auto-generated method stub
				
			}
		});
		gallery.setAdapter(mAdapter);
		gallery.setSelection(position);
		mDialog.show();
	}
	/**
	 * 每页新闻所显示的内容
	 * @author freddy.guo
	 *
	 */
	public class ViewPagerHolder{
		private TextView mWarning;
		private TextView mTitle;
		private TextView mAuthor;
		private TextView mData;
		private WebView mContent;
		private Gallery mGallery;
		private LinearLayout mpintLayout;
	}
	
	
	/**
	 * 设置新闻的字体大小
	 * @param size
	 */
	public void setTextSize(float size) {
		
		if (Logs.IS_DEBUG) {
			Logs.v("freddy", "字体大小设置");
		}
		if (null == views) {
			return;
		}
		for (int i = 1; i < views.size()-1; i  ) {
		
		textSizeView = (WebView)views.get(i).findViewById(R.id.
				text_news_datails_content);
		textSize = size;
		settings = textSizeView.getSettings();
		settings.setTextSize(getLocalTextSize(size));
		}
		notifyDataSetChanged();
	}
	/**
	 * 获取字体大小的分类
	 * @return
	 */
	private TextSize getLocalTextSize(float textSize) {
		if ((int)textSize <=12) {
			return WebSettings.TextSize.SMALLEST;
		}
		if ((int)textSize == 14) {
			return WebSettings.TextSize.SMALLER;
		}
		if ((int)textSize ==16) {
			return WebSettings.TextSize.NORMAL;
		}
		if ((int)textSize ==18) {
			return WebSettings.TextSize.LARGER;
		}
		if ((int)textSize==20) {
			return WebSettings.TextSize.LARGEST;
		}
		return WebSettings.TextSize.NORMAL;
		
	}
	
	/**
	 * 判定字符串是否为空
	 * @param value
	 * @return
	 */
	private boolean isEmpty(String value) {
		int strLen;
		if (value == null || (strLen = value.length()) == 0) {
			return true;
		}
		for (int i = 0; i < strLen; i  ) {
			if ((Character.isWhitespace(value.charAt(i)) == false)) {
				return false;
			}
		}
		return true;
	}
	
	/**
	 * add gallery navigation
	 */
	private void addNavigation(int position) {
		
		mLayout = (LinearLayout)views.get(itemPosttion).findViewById(R.id.layout_point);
		mLayout.setVisibility(View.VISIBLE);
		mLayout.removeAllViews();
		for (int i = 0; i <eachItemPicNum[itemPosttion]; i  ) {

			ImageView im = new ImageView(context);
			if (i == position) {
				im.setImageDrawable(context.getResources().
						getDrawable(R.drawable.icon_selected));

			} else {

				im.setImageDrawable(point);
			}
			im.setPadding(5, 2, 0, 0);
			mLayout.removeView(im);
			mLayout.addView(im);
		}
		if (eachItemPicNum[itemPosttion] == 1) {
			mLayout.setVisibility(View.GONE);
		}
		
	}
	
	/**
	 * 获取分享的字段数据
	 * @return
	 */
	public String  getShareDate() {
		
		return Html.fromHtml(shareStr[itemPosttion]).toString();
		
	}
	
	/**
	 * 获取分享的图片URL
	 * @return
	 */
	public  String getSharePicUrl() {
		
		return shareImg[itemPosttion];
		
	}

	public void refreshDate() {
		// TODO Auto-generated method stub
		//显示提示
		LinearLayout layout = (LinearLayout) views.get(itemPosttion).findViewById(R.id.progressBar1);
		((TextView)views.get(itemPosttion).findViewById(R.id.text_warning)).
		setVisibility(View.GONE);
		layout.setVisibility(View.VISIBLE);
		getNewsData(categoryId, itemPosttion-1,true);
	}
}



标签: Android 下载

实例下载地址

Android中通过ViewPager动态加载数据完整示例源码下载

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 s123 发表于: 2014-07-21 10:07 41
看看,学习学习

支持(0) 盖楼(回复)

第 2 楼 berrytao7 发表于: 2015-03-02 09:45 31
看看,学习学习

支持(0) 盖楼(回复)

第 3 楼 一拉小登一 发表于: 2015-07-13 14:13 05
学习下

支持(0) 盖楼(回复)

第 4 楼 zhenliang 发表于: 2015-08-05 15:07 18
我来说两句...111111111111111111111111111111111111111111111111

支持(0) 盖楼(回复)

第 5 楼 zhenliang 发表于: 2015-08-05 15:07 20
我来说两句...111111111111111111111111111111111111111111111111

支持(0) 盖楼(回复)

第 6 楼 zhenliang 发表于: 2015-08-05 15:07 21
我来说两句...111111111111111111111111111111111111111111111111

支持(0) 盖楼(回复)

第 7 楼 姚镜堂 发表于: 2015-09-02 16:43 06
我来说两句...要学习学习

支持(0) 盖楼(回复)

第 8 楼 GoldenTortoise 发表于: 2015-09-06 15:10 22
参考学习一下!

支持(0) 盖楼(回复)

第 9 楼 东升 发表于: 2016-02-22 16:56 46
太坑了,打不开

支持(0) 盖楼(回复)

第 10 楼 东升 发表于: 2016-02-22 16:56 52
太坑了,打不开

支持(0) 盖楼(回复)

第 11 楼 dragon0236 发表于: 2016-09-01 17:04 14
能用不? 我是来评论刷积分的

支持(0) 盖楼(回复)

第 12 楼 石马农 发表于: 2016-10-10 16:15 46
我是来评论刷积分的

支持(0) 盖楼(回复)

第 13 楼 石马农 发表于: 2016-10-10 16:15 48
我是来评论刷积分的

支持(0) 盖楼(回复)

第 14 楼 石马农 发表于: 2016-10-10 16:15 49
我是来评论刷积分的

支持(0) 盖楼(回复)

第 15 楼 zuijiang 发表于: 2017-05-04 11:41 28
看看

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有15条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
;
报警