XlistView的上拉刷新————下拉加载

首先导入三个类

//第一个类

/**
 * @file XListView.java
 * @package me.maxwin.view
 * @create Mar 18, 2012 6:28:41 PM
 * @author Maxwin
 * @description An ListView support (a) Pull down to refresh, (b) Pull up to load more.
 * 		Implement IXListViewListener, and see stopRefresh() / stopLoadMore().
 */
package org.com.cctest.view;


import com.example.xlistview.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.view.animation.DecelerateInterpolator;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.Scroller;
import android.widget.TextView;

public class XListView extends ListView implements OnScrollListener {

	private float mLastY = -1; // save event y
	private Scroller mScroller; // used for scroll back
	private OnScrollListener mScrollListener; // user's scroll listener

	// the interface to trigger refresh and load more.
	private IXListViewListener mListViewListener;

	// -- header view
	private XListViewHeader mHeaderView;
	// header view content, use it to calculate the Header's height. And hide it
	// when disable pull refresh.
	private RelativeLayout mHeaderViewContent;
	private TextView mHeaderTimeView;
	private int mHeaderViewHeight; // header view's height
	private boolean mEnablePullRefresh = true;
	private boolean mPullRefreshing = false; // is refreashing.

	// -- footer view
	private XListViewFooter mFooterView;
	private boolean mEnablePullLoad;
	private boolean mPullLoading;
	private boolean mIsFooterReady = false;
	
	// total list items, used to detect is at the bottom of listview.
	private int mTotalItemCount;

	// for mScroller, scroll back from header or footer.
	private int mScrollBack;
	private final static int SCROLLBACK_HEADER = 0;
	private final static int SCROLLBACK_FOOTER = 1;

	private final static int SCROLL_DURATION = 400; // scroll back duration
	private final static int PULL_LOAD_MORE_DELTA = 50; // when pull up >= 50px
														// at bottom, trigger
														// load more.
	private final static float OFFSET_RADIO = 1.8f; // support iOS like pull
													// feature.

	/**
	 * @param context
	 */
	public XListView(Context context) {
		super(context);
		initWithContext(context);
	}

	public XListView(Context context, AttributeSet attrs) {
		super(context, attrs);
		initWithContext(context);
	}

	public XListView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		initWithContext(context);
	}

	private void initWithContext(Context context) {
		mScroller = new Scroller(context, new DecelerateInterpolator());
		// XListView need the scroll event, and it will dispatch the event to
		// user's listener (as a proxy).
		super.setOnScrollListener(this);

		// init header view
		mHeaderView = new XListViewHeader(context);
		mHeaderViewContent = (RelativeLayout) mHeaderView
				.findViewById(R.id.xlistview_header_content);
		mHeaderTimeView = (TextView) mHeaderView
				.findViewById(R.id.xlistview_header_time);
		addHeaderView(mHeaderView);

		// init footer view
		mFooterView = new XListViewFooter(context);

		// init header height
		mHeaderView.getViewTreeObserver().addOnGlobalLayoutListener(
				new OnGlobalLayoutListener() {
					@Override
					public void onGlobalLayout() {
						mHeaderViewHeight = mHeaderViewContent.getHeight();
						getViewTreeObserver()
								.removeGlobalOnLayoutListener(this);
					}
				});
	}

	@Override
	public void setAdapter(ListAdapter adapter) {
		// make sure XListViewFooter is the last footer view, and only add once.
		if (mIsFooterReady == false) {
			mIsFooterReady = true;
			addFooterView(mFooterView);
		}
		super.setAdapter(adapter);
	}

	/**
	 * enable or disable pull down refresh feature.
	 * 
	 * @param enable
	 */
	public void setPullRefreshEnable(boolean enable) {
		mEnablePullRefresh = enable;
		if (!mEnablePullRefresh) { // disable, hide the content
			mHeaderViewContent.setVisibility(View.INVISIBLE);
		} else {
			mHeaderViewContent.setVisibility(View.VISIBLE);
		}
	}

	/**
	 * enable or disable pull up load more feature.
	 * 
	 * @param enable
	 */
	public void setPullLoadEnable(boolean enable) {
		mEnablePullLoad = enable;
		if (!mEnablePullLoad) {
			mFooterView.hide();
			mFooterView.setOnClickListener(null);
		} else {
			mPullLoading = false;
			mFooterView.show();
			mFooterView.setState(XListViewFooter.STATE_NORMAL);
			// both "pull up" and "click" will invoke load more.
			mFooterView.setOnClickListener(new OnClickListener() {
				@Override
				public void onClick(View v) {
					startLoadMore();
				}
			});
		}
	}

	/**
	 * stop refresh, reset header view.
	 */
	public void stopRefresh() {
		if (mPullRefreshing == true) {
			mPullRefreshing = false;
			resetHeaderHeight();
		}
	}

	/**
	 * stop load more, reset footer view.
	 */
	public void stopLoadMore() {
		if (mPullLoading == true) {
			mPullLoading = false;
			mFooterView.setState(XListViewFooter.STATE_NORMAL);
		}
	}

	/**
	 * set last refresh time
	 * 
	 * @param time
	 */
	public void setRefreshTime(String time) {
		mHeaderTimeView.setText(time);
	}

	private void invokeOnScrolling() {
		if (mScrollListener instanceof OnXScrollListener) {
			OnXScrollListener l = (OnXScrollListener) mScrollListener;
			l.onXScrolling(this);
		}
	}

	private void updateHeaderHeight(float delta) {
		mHeaderView.setVisiableHeight((int) delta
				+ mHeaderView.getVisiableHeight());
		if (mEnablePullRefresh && !mPullRefreshing) { // δ����ˢ��״̬�����¼�ͷ
			if (mHeaderView.getVisiableHeight() > mHeaderViewHeight) {
				mHeaderView.setState(XListViewHeader.STATE_READY);
			} else {
				mHeaderView.setState(XListViewHeader.STATE_NORMAL);
			}
		}
		setSelection(0); // scroll to top each time
	}

	/**
	 * reset header view's height.
	 */
	private void resetHeaderHeight() {
		int height = mHeaderView.getVisiableHeight();
		if (height == 0) // not visible.
			return;
		// refreshing and header isn't shown fully. do nothing.
		if (mPullRefreshing && height <= mHeaderViewHeight) {
			return;
		}
		int finalHeight = 0; // default: scroll back to dismiss header.
		// is refreshing, just scroll back to show all the header.
		if (mPullRefreshing && height > mHeaderViewHeight) {
			finalHeight = mHeaderViewHeight;
		}
		mScrollBack = SCROLLBACK_HEADER;
		mScroller.startScroll(0, height, 0, finalHeight - height,
				SCROLL_DURATION);
		// trigger computeScroll
		invalidate();
	}

	private void updateFooterHeight(float delta) {
		int height = mFooterView.getBottomMargin() + (int) delta;
		if (mEnablePullLoad && !mPullLoading) {
			if (height > PULL_LOAD_MORE_DELTA) { // height enough to invoke load
													// more.
				mFooterView.setState(XListViewFooter.STATE_READY);
			} else {
				mFooterView.setState(XListViewFooter.STATE_NORMAL);
			}
		}
		mFooterView.setBottomMargin(height);

//		setSelection(mTotalItemCount - 1); // scroll to bottom
	}

	private void resetFooterHeight() {
		int bottomMargin = mFooterView.getBottomMargin();
		if (bottomMargin > 0) {
			mScrollBack = SCROLLBACK_FOOTER;
			mScroller.startScroll(0, bottomMargin, 0, -bottomMargin,
					SCROLL_DURATION);
			invalidate();
		}
	}

	private void startLoadMore() {
		mPullLoading = true;
		mFooterView.setState(XListViewFooter.STATE_LOADING);
		if (mListViewListener != null) {
			mListViewListener.onLoadMore();
		}
	}

	@Override
	public boolean onTouchEvent(MotionEvent ev) {
		if (mLastY == -1) {
			mLastY = ev.getRawY();
		}

		switch (ev.getAction()) {
		case MotionEvent.ACTION_DOWN:
			mLastY = ev.getRawY();
			break;
		case MotionEvent.ACTION_MOVE:
			final float deltaY = ev.getRawY() - mLastY;
			mLastY = ev.getRawY();
			if (getFirstVisiblePosition() == 0
					&& (mHeaderView.getVisiableHeight() > 0 || deltaY > 0)) {
				// the first item is showing, header has shown or pull down.
				updateHeaderHeight(deltaY / OFFSET_RADIO);
				invokeOnScrolling();
			} else if (getLastVisiblePosition() == mTotalItemCount - 1
					&& (mFooterView.getBottomMargin() > 0 || deltaY < 0)) {
				// last item, already pulled up or want to pull up.
				updateFooterHeight(-deltaY / OFFSET_RADIO);
			}
			break;
		default:
			mLastY = -1; // reset
			if (getFirstVisiblePosition() == 0) {
				// invoke refresh
				if (mEnablePullRefresh
						&& mHeaderView.getVisiableHeight() > mHeaderViewHeight) {
					mPullRefreshing = true;
					mHeaderView.setState(XListViewHeader.STATE_REFRESHING);
					if (mListViewListener != null) {
						mListViewListener.onRefresh();
					}
				}
				resetHeaderHeight();
			} else if (getLastVisiblePosition() == mTotalItemCount - 1) {
				// invoke load more.
				if (mEnablePullLoad
						&& mFooterView.getBottomMargin() > PULL_LOAD_MORE_DELTA) {
					startLoadMore();
				}
				resetFooterHeight();
			}
			break;
		}
		return super.onTouchEvent(ev);
	}

	@Override
	public void computeScroll() {
		if (mScroller.computeScrollOffset()) {
			if (mScrollBack == SCROLLBACK_HEADER) {
				mHeaderView.setVisiableHeight(mScroller.getCurrY());
			} else {
				mFooterView.setBottomMargin(mScroller.getCurrY());
			}
			postInvalidate();
			invokeOnScrolling();
		}
		super.computeScroll();
	}

	@Override
	public void setOnScrollListener(OnScrollListener l) {
		mScrollListener = l;
	}

	@Override
	public void onScrollStateChanged(AbsListView view, int scrollState) {
		if (mScrollListener != null) {
			mScrollListener.onScrollStateChanged(view, scrollState);
		}
	}

	@Override
	public void onScroll(AbsListView view, int firstVisibleItem,
			int visibleItemCount, int totalItemCount) {
		// send to user's listener
		mTotalItemCount = totalItemCount;
		if (mScrollListener != null) {
			mScrollListener.onScroll(view, firstVisibleItem, visibleItemCount,
					totalItemCount);
		}
	}

	public void setXListViewListener(IXListViewListener l) {
		mListViewListener = l;
	}

	/**
	 * you can listen ListView.OnScrollListener or this one. it will invoke
	 * onXScrolling when header/footer scroll back.
	 */
	public interface OnXScrollListener extends OnScrollListener {
		public void onXScrolling(View view);
	}

	/**
	 * implements this interface to get refresh/load more event.
	 */
	public interface IXListViewListener {
		public void onRefresh();

		public void onLoadMore();
	}
}

//第二个类

/**
 * @file XFooterView.java
 * @create Mar 31, 2012 9:33:43 PM
 * @author Maxwin
 * @description XListView's footer
 */
package org.com.cctest.view;


import com.example.xlistview.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

public class XListViewFooter extends LinearLayout {
	public final static int STATE_NORMAL = 0;
	public final static int STATE_READY = 1;
	public final static int STATE_LOADING = 2;

	private Context mContext;

	private View mContentView;
	private View mProgressBar;
	private TextView mHintView;
	
	public XListViewFooter(Context context) {
		super(context);
		initView(context);
	}
	
	public XListViewFooter(Context context, AttributeSet attrs) {
		super(context, attrs);
		initView(context);
	}

	
	public void setState(int state) {
		mHintView.setVisibility(View.INVISIBLE);
		mProgressBar.setVisibility(View.INVISIBLE);
		mHintView.setVisibility(View.INVISIBLE);
		if (state == STATE_READY) {
			mHintView.setVisibility(View.VISIBLE);
			mHintView.setText(R.string.xlistview_footer_hint_ready);
		} else if (state == STATE_LOADING) {
			mProgressBar.setVisibility(View.VISIBLE);
		} else {
			mHintView.setVisibility(View.VISIBLE);
			mHintView.setText(R.string.xlistview_footer_hint_normal);
		}
	}
	
	public void setBottomMargin(int height) {
		if (height < 0) return ;
		LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)mContentView.getLayoutParams();
		lp.bottomMargin = height;
		mContentView.setLayoutParams(lp);
	}
	
	public int getBottomMargin() {
		LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)mContentView.getLayoutParams();
		return lp.bottomMargin;
	}
	
	
	/**
	 * normal status
	 */
	public void normal() {
		mHintView.setVisibility(View.VISIBLE);
		mProgressBar.setVisibility(View.GONE);
	}
	
	
	/**
	 * loading status 
	 */
	public void loading() {
		mHintView.setVisibility(View.GONE);
		mProgressBar.setVisibility(View.VISIBLE);
	}
	
	/**
	 * hide footer when disable pull load more
	 */
	public void hide() {
		LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)mContentView.getLayoutParams();
		lp.height = 0;
		mContentView.setLayoutParams(lp);
	}
	
	/**
	 * show footer
	 */
	public void show() {
		LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)mContentView.getLayoutParams();
		lp.height = LayoutParams.WRAP_CONTENT;
		mContentView.setLayoutParams(lp);
	}
	
	private void initView(Context context) {
		mContext = context;
		LinearLayout moreView = (LinearLayout)LayoutInflater.from(mContext).inflate(R.layout.xlistview_footer, null);
		addView(moreView);
		moreView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
		
		mContentView = moreView.findViewById(R.id.xlistview_footer_content);
		mProgressBar = moreView.findViewById(R.id.xlistview_footer_progressbar);
		mHintView = (TextView)moreView.findViewById(R.id.xlistview_footer_hint_textview);
	}
	
	
}
//第三个类
package org.com.cctest.view;

/**
 * @file XListViewHeader.java
 * @create Apr 18, 2012 5:22:27 PM
 * @author Maxwin
 * @description XListView's header
 */

import com.example.xlistview.R;

import android.content.Context;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;

public class XListViewHeader extends LinearLayout {
	private LinearLayout mContainer;
	private ImageView mArrowImageView;
	private ProgressBar mProgressBar;
	private TextView mHintTextView;
	private int mState = STATE_NORMAL;

	private Animation mRotateUpAnim;
	private Animation mRotateDownAnim;
	
	private final int ROTATE_ANIM_DURATION = 180;
	
	public final static int STATE_NORMAL = 0;
	public final static int STATE_READY = 1;
	public final static int STATE_REFRESHING = 2;

	public XListViewHeader(Context context) {
		super(context);
		initView(context);
	}

	/**
	 * @param context
	 * @param attrs
	 */
	public XListViewHeader(Context context, AttributeSet attrs) {
		super(context, attrs);
		initView(context);
	}

	private void initView(Context context) {
		// ��ʼ�������������ˢ��view�߶�Ϊ0
		LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
				LayoutParams.FILL_PARENT, 0);
		mContainer = (LinearLayout) LayoutInflater.from(context).inflate(
				R.layout.xlistview_header, null);
		addView(mContainer, lp);
		setGravity(Gravity.BOTTOM);

		mArrowImageView = (ImageView)findViewById(R.id.xlistview_header_arrow);
		mHintTextView = (TextView)findViewById(R.id.xlistview_header_hint_textview);
		mProgressBar = (ProgressBar)findViewById(R.id.xlistview_header_progressbar);
		
		mRotateUpAnim = new RotateAnimation(0.0f, -180.0f,
				Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
				0.5f);
		mRotateUpAnim.setDuration(ROTATE_ANIM_DURATION);
		mRotateUpAnim.setFillAfter(true);
		mRotateDownAnim = new RotateAnimation(-180.0f, 0.0f,
				Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
				0.5f);
		mRotateDownAnim.setDuration(ROTATE_ANIM_DURATION);
		mRotateDownAnim.setFillAfter(true);
	}

	public void setState(int state) {
		if (state == mState) return ;
		
		if (state == STATE_REFRESHING) {	// ��ʾ���
			mArrowImageView.clearAnimation();
			mArrowImageView.setVisibility(View.INVISIBLE);
			mProgressBar.setVisibility(View.VISIBLE);
		} else {	// ��ʾ��ͷͼƬ
			mArrowImageView.setVisibility(View.VISIBLE);
			mProgressBar.setVisibility(View.INVISIBLE);
		}
		
		switch(state){
		case STATE_NORMAL:
			if (mState == STATE_READY) {
				mArrowImageView.startAnimation(mRotateDownAnim);
			}
			if (mState == STATE_REFRESHING) {
				mArrowImageView.clearAnimation();
			}
			mHintTextView.setText(R.string.xlistview_header_hint_normal);
			break;
		case STATE_READY:
			if (mState != STATE_READY) {
				mArrowImageView.clearAnimation();
				mArrowImageView.startAnimation(mRotateUpAnim);
				mHintTextView.setText(R.string.xlistview_header_hint_ready);
			}
			break;
		case STATE_REFRESHING:
			mHintTextView.setText(R.string.xlistview_header_hint_loading);
			break;
			default:
		}
		
		mState = state;
	}
	
	public void setVisiableHeight(int height) {
		if (height < 0)
			height = 0;
		LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) mContainer
				.getLayoutParams();
		lp.height = height;
		mContainer.setLayoutParams(lp);
	}

	public int getVisiableHeight() {
		return mContainer.getHeight();
	}

}
//其次要导入二个xml布局文件

//第一个

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <RelativeLayout
        android:id="@+id/xlistview_footer_content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="10dp" >

        <ProgressBar
            android:id="@+id/xlistview_footer_progressbar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:visibility="invisible" />

        <TextView
            android:id="@+id/xlistview_footer_hint_textview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="@string/xlistview_footer_hint_normal" />
    </RelativeLayout>

</LinearLayout>
//第二个

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="bottom" >

    <RelativeLayout
        android:id="@+id/xlistview_header_content"
        android:layout_width="fill_parent"
        android:layout_height="60dp" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:orientation="vertical" android:id="@+id/xlistview_header_text">

            <TextView
                android:id="@+id/xlistview_header_hint_textview"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/xlistview_header_hint_normal" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="3dp" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/xlistview_header_last_time"
                    android:textSize="12sp" />

                <TextView
                    android:id="@+id/xlistview_header_time"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="12sp" />
            </LinearLayout>
        </LinearLayout>

        <ImageView
            android:id="@+id/xlistview_header_arrow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@id/xlistview_header_text"
            android:layout_centerVertical="true"
            android:layout_marginLeft="-35dp"
            android:src="@drawable/xlistview_arrow" />

        <ProgressBar
            android:id="@+id/xlistview_header_progressbar"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignLeft="@id/xlistview_header_text"
            android:layout_centerVertical="true"
            android:layout_marginLeft="-40dp"
            android:visibility="invisible" />
    </RelativeLayout>

</LinearLayout>
//在res文件夹下的values文件夹里的strings.xml中加入

<string name="xlistview_header_hint_normal">下拉刷新</string>
    <string name="xlistview_header_hint_ready">松开刷新数据</string>
    <string name="xlistview_header_hint_loading">正在加载...</string>
    <string name="xlistview_header_last_time">上次更新时间:</string>
    <string name="xlistview_footer_hint_normal">查看更多</string>
    <string name="xlistview_footer_hint_ready">松开载入更多</string>
    
//代码----解析的bean包<pre name="code" class="java">package com.example.xlistview;


import java.util.LinkedList;
import java.util.List;

/**
 * Created by Wang.J.L on 2016/6/14.
 */
public class Data {

    /**
     * login_status : 0
     * total_number : 11
     * has_more : true
     * message : success
     * has_more_to_refresh : true
     * data : [{"media_name":"佛佑车友","ban_comment":0,"abstract":"","image_list":[{"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6","width":550,"url_list":[{"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb2.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb3.pstatp.com/list/7b6000973a4026ae1b6"}],"uri":"list/7b6000973a4026ae1b6","height":457},{"url":"http://p3.pstatp.com/list/7f900000e83b5be2a96","width":550,"url_list":[{"url":"http://p3.pstatp.com/list/7f900000e83b5be2a96"},{"url":"http://pb2.pstatp.com/list/7f900000e83b5be2a96"},{"url":"http://pb3.pstatp.com/list/7f900000e83b5be2a96"}],"uri":"list/7f900000e83b5be2a96","height":419},{"url":"http://p3.pstatp.com/list/7fb00000e612db9b75a","width":550,"url_list":[{"url":"http://p3.pstatp.com/list/7fb00000e612db9b75a"},{"url":"http://pb2.pstatp.com/list/7fb00000e612db9b75a"},{"url":"http://pb3.pstatp.com/list/7fb00000e612db9b75a"}],"uri":"list/7fb00000e612db9b75a","height":311}],"has_video":false,"article_type":0,"tag":"news_tech","has_m3u8_video":0,"keywords":"控制技术,汽车公司,德国,外部照射,嵌入式","has_mp4_video":0,"display_url":"http://toutiao.com/group/6295678043395784961/","article_sub_type":0,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"bury_count":0,"title":"有了这个智能车窗,网友直呼再也不用担心泄漏隐私了","tip":0,"hot":0,"share_url":"http://toutiao.com/group/6295678043395784961/?iid=4464422609&app=news_article","source":"佛佑车友","comment_count":31,"article_url":"http://toutiao.com/group/6295678043395784961/","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:407307565","name":"来源:佛佑车友"},{"is_selected":false,"id":"6:19926","name":"隐私"}],"aggr_type":1,"publish_time":1465828293,"group_flags":131072,"display_title":" ","gallary_image_count":5,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6295678043395784961,"item_id":6295684581643256321,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://toutiao.com/group/6295678043395784961/","repin_count":151,"digg_count":5,"behot_time":1465904453,"cursor":1465904453000,"preload_web":1,"has_image":true,"group_id":6295678043395784961,"middle_image":{"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6","width":550,"url_list":[{"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb2.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb3.pstatp.com/list/7b6000973a4026ae1b6"}],"uri":"list/7b6000973a4026ae1b6","height":457}},{"media_name":"车库咖啡","ban_comment":0,"abstract":"创业是不断试错的过程,要拥抱变化!\u2014\u2014周鸿祎他是\u201c屌丝之王\u201d,2013年参加电视节目《百万屌丝》拔得头筹,赢得了百万创业基金;他喜欢画画,车库咖啡的创业小伙伴都叫他\u201c小画家\u201d;他是连续创业者,每天把品牌化、商业化挂在嘴边,五年间转换六个创业项目,创业热情从未间断。他便是本期的嘉宾","image_list":[{"url":"http://p3.pstatp.com/list/7fb000095e3b6ad7ce2","width":640,"url_list":[{"url":"http://p3.pstatp.com/list/7fb000095e3b6ad7ce2"},{"url":"http://pb2.pstatp.com/list/7fb000095e3b6ad7ce2"},{"url":"http://pb3.pstatp.com/list/7fb000095e3b6ad7ce2"}],"uri":"list/7fb000095e3b6ad7ce2","height":427},{"url":"http://p3.pstatp.com/list/7da000519cfc6af01d7","width":550,"url_list":[{"url":"http://p3.pstatp.com/list/7da000519cfc6af01d7"},{"url":"http://pb2.pstatp.com/list/7da000519cfc6af01d7"},{"url":"http://pb3.pstatp.com/list/7da000519cfc6af01d7"}],"uri":"list/7da000519cfc6af01d7","height":825},{"url":"http://p1.pstatp.com/list/7fc000094363fe04f57","width":320,"url_list":[{"url":"http://p1.pstatp.com/list/7fc000094363fe04f57"},{"url":"http://pb3.pstatp.com/list/7fc000094363fe04f57"},{"url":"http://pb3.pstatp.com/list/7fc000094363fe04f57"}],"uri":"list/7fc000094363fe04f57","height":240}],"has_video":false,"article_type":0,"tag":"news_tech","has_m3u8_video":0,"keywords":"小画家,巴基斯坦,比特币,吴建辉,深圳","has_mp4_video":0,"display_url":"http://toutiao.com/group/6294547354272383234/","article_sub_type":0,"bury_count":0,"title":"创业需要不断试错,专访车库\u201c小画家\u201d\u2014\u2014吴建辉","tip":1,"hot":1,"share_url":"http://toutiao.com/group/6294547354272383234/?iid=4464422609&app=news_article","source":"车库咖啡","comment_count":0,"article_url":"http://toutiao.com/group/6294547354272383234/","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:11693906","name":"来源:车库咖啡"},{"is_selected":false,"id":"6:2714843","name":"吴建辉"},{"is_selected":false,"id":"6:300046","name":"小画家"}],"aggr_type":1,"publish_time":1465887102,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":11,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6294547354272383234,"item_id":6295937166644085250,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://toutiao.com/group/6294547354272383234/","repin_count":1,"digg_count":0,"behot_time":1465904302,"cursor":1465904302000,"preload_web":1,"has_image":true,"group_id":6294547354272383234,"middle_image":{"url":"http://p3.pstatp.com/list/7fb000095e3b6ad7ce2","width":640,"url_list":[{"url":"http://p3.pstatp.com/list/7fb000095e3b6ad7ce2"},{"url":"http://pb2.pstatp.com/list/7fb000095e3b6ad7ce2"},{"url":"http://pb3.pstatp.com/list/7fb000095e3b6ad7ce2"}],"uri":"list/7fb000095e3b6ad7ce2","height":427}},{"media_name":"TV全网通","ban_comment":0,"abstract":"经常关注数码的朋友可能了解到,近期有消息曝光了HTC首款无边框手机,HTC可能会凭借这个新产品来挽回手机在市场的地位,从曝光的渲染图上来看,无边框手机确实很漂亮。但是现在市面上大多数产品都是ID无边框。因为对于手机屏幕来,边框变窄甚至发展成无边框,这些设计不仅能提升视觉享受还能合","image_list":[{"url":"http://p3.pstatp.com/list/7fc00008ee7fa8c6627","width":552,"url_list":[{"url":"http://p3.pstatp.com/list/7fc00008ee7fa8c6627"},{"url":"http://pb2.pstatp.com/list/7fc00008ee7fa8c6627"},{"url":"http://pb3.pstatp.com/list/7fc00008ee7fa8c6627"}],"uri":"list/7fc00008ee7fa8c6627","height":371},{"url":"http://p3.pstatp.com/list/7fb0000908af55ea291","width":686,"url_list":[{"url":"http://p3.pstatp.com/list/7fb0000908af55ea291"},{"url":"http://pb2.pstatp.com/list/7fb0000908af55ea291"},{"url":"http://pb3.pstatp.com/list/7fb0000908af55ea291"}],"uri":"list/7fb0000908af55ea291","height":403},{"url":"http://p3.pstatp.com/list/7fd00008f023b958f38","width":690,"url_list":[{"url":"http://p3.pstatp.com/list/7fd00008f023b958f38"},{"url":"http://pb2.pstatp.com/list/7fd00008f023b958f38"},{"url":"http://pb3.pstatp.com/list/7fd00008f023b958f38"}],"uri":"list/7fd00008f023b958f38","height":384}],"has_video":false,"article_type":0,"tag":"digital","has_m3u8_video":0,"keywords":"nubia,夏普,液晶屏幕,三星,努比亚","has_mp4_video":0,"display_url":"http://toutiao.com/group/6295929982883496194/","article_sub_type":0,"bury_count":0,"title":"创新与极致追求 努比亚无边框手机或许能成为用户新宠","tip":0,"hot":0,"share_url":"http://toutiao.com/group/6295929982883496194/?iid=4464422609&app=news_article","source":"TV全网通","comment_count":5,"article_url":"http://toutiao.com/group/6295929982883496194/","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:308036044","name":"来源:TV全网通"},{"is_selected":false,"id":"6:120479","name":"努比亚"}],"aggr_type":1,"publish_time":1465886300,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":7,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6295929982883496194,"item_id":6295933721698632194,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://toutiao.com/group/6295929982883496194/","repin_count":4,"digg_count":0,"behot_time":1465903546,"cursor":1465903546000,"preload_web":1,"has_image":true,"group_id":6295929982883496194,"middle_image":{"url":"http://p3.pstatp.com/list/7fc00008ee7fa8c6627","width":552,"url_list":[{"url":"http://p3.pstatp.com/list/7fc00008ee7fa8c6627"},{"url":"http://pb2.pstatp.com/list/7fc00008ee7fa8c6627"},{"url":"http://pb3.pstatp.com/list/7fc00008ee7fa8c6627"}],"uri":"list/7fc00008ee7fa8c6627","height":371}},{"media_name":"财视传媒","ban_comment":0,"abstract":"当一个公司的掌舵人,就要承受着常人无法理解的压力,不仅要懂技术、懂商业、懂宣传。。还要有三头六臂,跟不同的人沟通,切换不同的频道。一天开十几个会,甚至忙到没时间睡觉。那么作为大家所熟知的企业家大佬们,都是什么作息时间呢? 1. 苹果CEO 库克2. 苹果联合创始人乔布斯3.腾讯董","image_list":[{"url":"http://p3.pstatp.com/list/63e00042856e93d1be2","width":600,"url_list":[{"url":"http://p3.pstatp.com/list/63e00042856e93d1be2"},{"url":"http://pb2.pstatp.com/list/63e00042856e93d1be2"},{"url":"http://pb3.pstatp.com/list/63e00042856e93d1be2"}],"uri":"list/63e00042856e93d1be2","height":600},{"url":"http://p3.pstatp.com/list/6400004097cd9dff3c5","width":600,"url_list":[{"url":"http://p3.pstatp.com/list/6400004097cd9dff3c5"},{"url":"http://pb2.pstatp.com/list/6400004097cd9dff3c5"},{"url":"http://pb3.pstatp.com/list/6400004097cd9dff3c5"}],"uri":"list/6400004097cd9dff3c5","height":563},{"url":"http://p1.pstatp.com/list/6400004097efa985d4e","width":600,"url_list":[{"url":"http://p1.pstatp.com/list/6400004097efa985d4e"},{"url":"http://pb3.pstatp.com/list/6400004097efa985d4e"},{"url":"http://pb3.pstatp.com/list/6400004097efa985d4e"}],"uri":"list/6400004097efa985d4e","height":563}],"has_video":false,"article_type":0,"tag":"news_tech","has_m3u8_video":0,"keywords":"库克,马化腾,巨人网络,马克\u2022扎克伯格,任正非,马云,睡觉,创新工场,史玉柱,华为,苹果,三头六臂,古永锵,李开复,雷军","has_mp4_video":0,"display_url":"http://toutiao.com/group/6283744203650810113/","article_sub_type":0,"bury_count":0,"title":"大佬们的谜之作息 库克半夜起床马云睡到日上三竿","tip":1,"hot":1,"share_url":"http://toutiao.com/group/6283744203650810113/?iid=4464422609&app=news_article","source":"财视传媒","comment_count":251,"article_url":"http://www.caishimv.com/party/1463048250.html","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:26393231","name":"来源:财视传媒"},{"is_selected":false,"id":"6:16259","name":"库克"},{"is_selected":false,"id":"6:17277","name":"马云"}],"aggr_type":1,"publish_time":1463046840,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":8,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6283744203650810113,"item_id":6283746815342821889,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://www.caishimv.com/party/1463048250.html","repin_count":2583,"digg_count":10,"behot_time":1465902540,"cursor":1465902540000,"preload_web":1,"has_image":true,"group_id":6283744203650810113,"middle_image":{"url":"http://p3.pstatp.com/list/63e00042856e93d1be2","width":600,"url_list":[{"url":"http://p3.pstatp.com/list/63e00042856e93d1be2"},{"url":"http://pb2.pstatp.com/list/63e00042856e93d1be2"},{"url":"http://pb3.pstatp.com/list/63e00042856e93d1be2"}],"uri":"list/63e00042856e93d1be2","height":600}},{"media_name":"芝麻易借","ban_comment":0,"abstract":"说到支付宝,大家都不陌生。日常生活中,相信很多网友使用最多的功能是转账、支付、发红包、余额宝理财等。可是你知道吗?除了这些之外,支付宝还\u201c隐藏\u201d着许多强大的功能。下面小融就带大家一起来感受一下,看看你都get到了几样! 1、炒股有心的话,你应该会注意到:去年年初,支付宝就更新添加","image_list":[{"url":"http://p1.pstatp.com/list/52d0005fa881ca7c55c","width":1485,"url_list":[{"url":"http://p1.pstatp.com/list/52d0005fa881ca7c55c"},{"url":"http://pb3.pstatp.com/list/52d0005fa881ca7c55c"},{"url":"http://pb3.pstatp.com/list/52d0005fa881ca7c55c"}],"uri":"list/52d0005fa881ca7c55c","height":835},{"url":"http://p2.pstatp.com/list/52c0005f92fd5b52d1a","width":398,"url_list":[{"url":"http://p2.pstatp.com/list/52c0005f92fd5b52d1a"},{"url":"http://pb3.pstatp.com/list/52c0005f92fd5b52d1a"},{"url":"http://pb3.pstatp.com/list/52c0005f92fd5b52d1a"}],"uri":"list/52c0005f92fd5b52d1a","height":519},{"url":"http://p1.pstatp.com/list/52c0005f82ea50da297","width":635,"url_list":[{"url":"http://p1.pstatp.com/list/52c0005f82ea50da297"},{"url":"http://pb3.pstatp.com/list/52c0005f82ea50da297"},{"url":"http://pb3.pstatp.com/list/52c0005f82ea50da297"}],"uri":"list/52c0005f82ea50da297","height":661}],"has_video":false,"article_type":0,"tag":"news_tech","has_m3u8_video":0,"keywords":"信用卡,银行,公积金,余额宝,三星,互联网,京东,支付宝,签证,股票,德国,刘强东,马云,保险","has_mp4_video":0,"display_url":"http://toutiao.com/group/6278162851397140737/","article_sub_type":0,"bury_count":0,"title":"支付宝既要改变银行.更要改变世界!","tip":0,"hot":0,"share_url":"http://toutiao.com/group/6278162851397140737/?iid=4464422609&app=news_article","source":"芝麻易借","comment_count":8,"article_url":"http://toutiao.com/group/6278162851397140737/","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:387678833","name":"来源:芝麻易借"},{"is_selected":false,"id":"6:15613","name":"银行"},{"is_selected":false,"id":"6:19942","name":"支付宝"}],"aggr_type":1,"publish_time":1461749260,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":12,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6278162851397140737,"item_id":6278165267675611650,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://toutiao.com/group/6278162851397140737/","repin_count":151,"digg_count":1,"behot_time":1465901534,"cursor":1465901534000,"preload_web":1,"has_image":true,"group_id":6278162851397140737,"middle_image":{"url":"http://p1.pstatp.com/list/52d0005fa881ca7c55c","width":1485,"url_list":[{"url":"http://p1.pstatp.com/list/52d0005fa881ca7c55c"},{"url":"http://pb3.pstatp.com/list/52d0005fa881ca7c55c"},{"url":"http://pb3.pstatp.com/list/52d0005fa881ca7c55c"}],"uri":"list/52d0005fa881ca7c55c","height":835}},{"media_name":"科技天天看","ban_comment":0,"abstract":"时值夏日,炎热的气温仿佛也给VR这个当下火爆的话题提升了些许温度,甚至带了一丝火药味。就在昨日举行的上海国际电影节上,小米影业总裁、小米VR总经理唐沐对外公布了小米VR与小米影业两大战略,并确定小米头显将于8月正式发布。","image_list":[],"has_video":false,"article_type":0,"tag":"news_tech","has_m3u8_video":0,"keywords":"暴风魔镜,无人机,智能手机,电饭煲,小米","has_mp4_video":0,"display_url":"http://toutiao.com/group/6295972249367888129/","article_sub_type":0,"bury_count":0,"title":"小米开撕暴风魔镜?借势上位还是奇货可居","tip":0,"hot":0,"share_url":"http://toutiao.com/group/6295972249367888129/?iid=4464422609&app=news_article","source":"科技天天看","comment_count":1,"article_url":"http://toutiao.com/group/6295972249367888129/","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:280243840","name":"来源:科技天天看"},{"is_selected":false,"id":"6:18144","name":"小米"},{"is_selected":false,"id":"6:135360","name":"魔镜"}],"aggr_type":1,"publish_time":1465896156,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":1,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6295972249367888129,"item_id":6295976049968677377,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://toutiao.com/group/6295972249367888129/","repin_count":3,"digg_count":0,"behot_time":1465900528,"cursor":1465900528000,"preload_web":1,"has_image":true,"group_id":6295972249367888129,"middle_image":{"url":"http://p3.pstatp.com/list/7f90000ccbfa4153f12","width":676,"url_list":[{"url":"http://p3.pstatp.com/list/7f90000ccbfa4153f12"},{"url":"http://pb2.pstatp.com/list/7f90000ccbfa4153f12"},{"url":"http://pb3.pstatp.com/list/7f90000ccbfa4153f12"}],"uri":"list/7f90000ccbfa4153f12","height":324}},{"media_name":"每日游戏播报","ban_comment":0,"abstract":"作为BAT外的一个捣鬼的存在,360一直是一个搅局者,我们一直期待它的表演,也为它的步步惊心的狩猎而屏住呼吸。此次360手机N4发布会,从预热期起便大有精心筹划许久一触即发的澎湃感。此次360手机N4发布会,首次发的海报图如下:从图上不难看出,本次手机发布会不仅仅是手机本身的事件","image_list":[],"has_video":false,"article_type":0,"tag":"news_game","has_m3u8_video":0,"keywords":"大格局,中国手游,神仙道2,阿米巴,热爱者,绝路逢生,安卓,定制机","has_mp4_video":0,"display_url":"http://toutiao.com/group/6281148355583148289/","article_sub_type":0,"bury_count":1,"title":"揭秘真相:360手机N4神仙道2定制机背后的大格局","tip":0,"hot":0,"share_url":"http://toutiao.com/group/6281148355583148289/?iid=4464422609&app=news_article","source":"每日游戏播报","comment_count":40,"article_url":"http://mp.weixin.qq.com/s?__biz=MjM5NTMxNTU0MQ==&mid=2649869203&idx=3&sn=09c3ad27dad5af719c6ec966e4fed2e7","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:9337734","name":"来源:GameRes游资网"},{"is_selected":false,"id":"6:15913","name":"手机"},{"is_selected":false,"id":"6:229043","name":"定制机"}],"aggr_type":1,"publish_time":1462536334,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":0,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6281148355583148289,"item_id":6281568409922568705,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://mp.weixin.qq.com/s?__biz=MjM5NTMxNTU0MQ==&mid=2649869203&idx=3&sn=09c3ad27dad5af719c6ec966e4fed2e7","repin_count":111,"digg_count":0,"behot_time":1465899522,"cursor":1465899522000,"preload_web":1,"has_image":false,"group_id":6281148355583148289},{"media_name":"安全牛","ban_comment":0,"abstract":"软件中的安全漏洞很难发现。特意种植的那些:间谍或蓄意破坏分子制造的隐藏后门甚至更难发现。想象一个不是种植在应用,或者深深嵌入在操作系统中的恶意软件。它藏得更深,在计算机运行所需的处理器中。再想象一个基于硅的后门,它并不仅仅对计算机的软件隐身,甚至对芯片的设计者也隐身。芯片设计人员","image_list":[{"url":"http://p3.pstatp.com/list/7460004146d98fcb49a","width":600,"url_list":[{"url":"http://p3.pstatp.com/list/7460004146d98fcb49a"},{"url":"http://pb2.pstatp.com/list/7460004146d98fcb49a"},{"url":"http://pb3.pstatp.com/list/7460004146d98fcb49a"}],"uri":"list/7460004146d98fcb49a","height":450},{"url":"http://p3.pstatp.com/list/745000412c33aed7875","width":482,"url_list":[{"url":"http://p3.pstatp.com/list/745000412c33aed7875"},{"url":"http://pb2.pstatp.com/list/745000412c33aed7875"},{"url":"http://pb3.pstatp.com/list/745000412c33aed7875"}],"uri":"list/745000412c33aed7875","height":265},{"url":"http://p3.pstatp.com/list/74a00040101742ff337","width":582,"url_list":[{"url":"http://p3.pstatp.com/list/74a00040101742ff337"},{"url":"http://pb2.pstatp.com/list/74a00040101742ff337"},{"url":"http://pb3.pstatp.com/list/74a00040101742ff337"}],"uri":"list/74a00040101742ff337","height":288}],"has_video":false,"article_type":0,"tag":"news_tech","has_m3u8_video":0,"keywords":"计算机安全,模拟电路,利用漏洞,概念验证,元件,芯片,电能,恶意软件,谷歌,二极管,密歇根大学,后门","has_mp4_video":0,"display_url":"http://toutiao.com/group/6292896737682882817/","article_sub_type":0,"bury_count":1,"title":"最隐蔽、恶毒且最聪明的后门 可嵌入头发直径千分之一的芯片中","tip":0,"hot":0,"share_url":"http://toutiao.com/group/6292896737682882817/?iid=4464422609&app=news_article","source":"安全牛","comment_count":26,"article_url":"http://mp.weixin.qq.com/s?__biz=MjM5Njc3NjM4MA==&mid=2651067132&idx=2&sn=41f223d2d21f5bef18ff4cb20fe95abc","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:52306621","name":"来源:安全牛"},{"is_selected":false,"id":"6:19848","name":"芯片"},{"is_selected":false,"id":"6:77584","name":"后门"}],"aggr_type":1,"publish_time":1465178184,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":3,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6292896737682882817,"item_id":6292900141410025986,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://mp.weixin.qq.com/s?__biz=MjM5Njc3NjM4MA==&mid=2651067132&idx=2&sn=41f223d2d21f5bef18ff4cb20fe95abc","repin_count":243,"digg_count":0,"behot_time":1465898516,"cursor":1465898516000,"preload_web":1,"has_image":true,"group_id":6292896737682882817,"middle_image":{"url":"http://p3.pstatp.com/list/7460004146d98fcb49a","width":600,"url_list":[{"url":"http://p3.pstatp.com/list/7460004146d98fcb49a"},{"url":"http://pb2.pstatp.com/list/7460004146d98fcb49a"},{"url":"http://pb3.pstatp.com/list/7460004146d98fcb49a"}],"uri":"list/7460004146d98fcb49a","height":450}},{"media_name":"手机数据恢复与取证","ban_comment":0,"abstract":"当您看到此文,一定要在第一时间转发到自己的微信朋友圈或qq群,因为,您的朋友,一旦出现微信和qq聊天记录需要数据恢复或者取证的时候,就有可能进入骗子精心设计的骗局。最近半年,笔者的经常接到这样的电话咨询:希望恢复被删除的微信或者QQ聊天记录,并且只给我提供微信号或者qq号,要恢复","image_list":[{"url":"http://p3.pstatp.com/list/5d90000bfcd97cfe45e","width":640,"url_list":[{"url":"http://p3.pstatp.com/list/5d90000bfcd97cfe45e"},{"url":"http://pb2.pstatp.com/list/5d90000bfcd97cfe45e"},{"url":"http://pb3.pstatp.com/list/5d90000bfcd97cfe45e"}],"uri":"list/5d90000bfcd97cfe45e","height":824},{"url":"http://p1.pstatp.com/list/5b10002c11598027835","width":640,"url_list":[{"url":"http://p1.pstatp.com/list/5b10002c11598027835"},{"url":"http://pb3.pstatp.com/list/5b10002c11598027835"},{"url":"http://pb3.pstatp.com/list/5b10002c11598027835"}],"uri":"list/5b10002c11598027835","height":824},{"url":"http://p3.pstatp.com/list/5d90000bfc9b3bfbad8","width":640,"url_list":[{"url":"http://p3.pstatp.com/list/5d90000bfc9b3bfbad8"},{"url":"http://pb2.pstatp.com/list/5d90000bfc9b3bfbad8"},{"url":"http://pb3.pstatp.com/list/5d90000bfc9b3bfbad8"}],"uri":"list/5d90000bfc9b3bfbad8","height":824}],"has_video":false,"article_type":0,"tag":"news_tech","has_m3u8_video":0,"keywords":"汇款,骗子,数据恢复,百度搜索,微信","has_mp4_video":0,"display_url":"http://toutiao.com/group/6280462799790686466/","article_sub_type":0,"bury_count":0,"title":"百度竞价被骗子利用的另一战场:微信QQ聊天记录恢复","tip":0,"hot":0,"share_url":"http://toutiao.com/group/6280462799790686466/?iid=4464422609&app=news_article","source":"手机数据恢复与取证","comment_count":69,"article_url":"http://toutiao.com/group/6280462799790686466/","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:321245256","name":"来源:手机数据恢复与取证"},{"is_selected":false,"id":"6:59708","name":"百度"},{"is_selected":false,"id":"6:16605","name":"骗子"}],"aggr_type":1,"publish_time":1462285355,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":36,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6280462799790686466,"item_id":6280467778839249410,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://toutiao.com/group/6280462799790686466/","repin_count":197,"digg_count":1,"behot_time":1465897510,"cursor":1465897510000,"preload_web":1,"has_image":true,"group_id":6280462799790686466,"middle_image":{"url":"http://p3.pstatp.com/list/5d90000bfcd97cfe45e","width":640,"url_list":[{"url":"http://p3.pstatp.com/list/5d90000bfcd97cfe45e"},{"url":"http://pb2.pstatp.com/list/5d90000bfcd97cfe45e"},{"url":"http://pb3.pstatp.com/list/5d90000bfcd97cfe45e"}],"uri":"list/5d90000bfcd97cfe45e","height":824}},{"media_name":"创业宝典","ban_comment":0,"abstract":"电影商店和iBooks Store已经不可用好几天了,大家都好奇发生了什么事情。而今天,苹果终于做出了回应,为了控制内容的发布,广电总局要求苹果关闭中国区的iTunes Movies和iBooks Store。而苹果的发言人也做出了表示,将尽快重新向中国用户开放这两个商店。可是,","image_list":[{"url":"http://p3.pstatp.com/list/52d00021623ec1cc0a8","width":197,"url_list":[{"url":"http://p3.pstatp.com/list/52d00021623ec1cc0a8"},{"url":"http://pb2.pstatp.com/list/52d00021623ec1cc0a8"},{"url":"http://pb3.pstatp.com/list/52d00021623ec1cc0a8"}],"uri":"list/52d00021623ec1cc0a8","height":180},{"url":"http://p1.pstatp.com/list/52e00021558a46a28b3","width":200,"url_list":[{"url":"http://p1.pstatp.com/list/52e00021558a46a28b3"},{"url":"http://pb3.pstatp.com/list/52e00021558a46a28b3"},{"url":"http://pb3.pstatp.com/list/52e00021558a46a28b3"}],"uri":"list/52e00021558a46a28b3","height":200},{"url":"http://p3.pstatp.com/list/52e0002155ac58217ea","width":459,"url_list":[{"url":"http://p3.pstatp.com/list/52e0002155ac58217ea"},{"url":"http://pb2.pstatp.com/list/52e0002155ac58217ea"},{"url":"http://pb3.pstatp.com/list/52e0002155ac58217ea"}],"uri":"list/52e0002155ac58217ea","height":432}],"has_video":false,"article_type":0,"tag":"news_tech","has_m3u8_video":0,"keywords":"iBooks,iPhone,定位服务,删除按钮,微信,小白点,广电总局,AssistiveTouch,高德地图,苹果","has_mp4_video":0,"display_url":"http://toutiao.com/group/6276410256143253762/","article_sub_type":0,"bury_count":0,"title":"iPhone自带应用竟然也能删除,这是真的吗?","tip":0,"hot":0,"share_url":"http://toutiao.com/group/6276410256143253762/?iid=4464422609&app=news_article","source":"创业宝典","comment_count":13,"article_url":"http://toutiao.com/group/6276410256143253762/","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:50998788","name":"来源:创业宝典"},{"is_selected":false,"id":"6:18151","name":"iphone"}],"aggr_type":1,"publish_time":1461341167,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":19,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6276410256143253762,"item_id":6276395909207032321,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://toutiao.com/group/6276410256143253762/","repin_count":185,"digg_count":0,"behot_time":1465896504,"cursor":1465896504000,"preload_web":1,"has_image":true,"group_id":6276410256143253762,"middle_image":{"url":"http://p3.pstatp.com/list/52d00021623ec1cc0a8","width":197,"url_list":[{"url":"http://p3.pstatp.com/list/52d00021623ec1cc0a8"},{"url":"http://pb2.pstatp.com/list/52d00021623ec1cc0a8"},{"url":"http://pb3.pstatp.com/list/52d00021623ec1cc0a8"}],"uri":"list/52d00021623ec1cc0a8","height":180}},{"media_name":"机友i应用","ban_comment":0,"abstract":"ios一路走来,从期初的我行我素,到现在慢慢的改变,都是为了适应市场的需求。现在的ios已经越来越开放,越来越人性化。细数每次ios的升级,除了图标风格的改变,很多细节的更新也是让用户兴奋不已。但是,你知道吗,很多所谓新的功能,在推出之前一年,甚至n年,越狱后的插件都能实现,而每","image_list":[{"url":"http://p3.pstatp.com/list/4110013c01f9bd084ef","width":611,"url_list":[{"url":"http://p3.pstatp.com/list/4110013c01f9bd084ef"},{"url":"http://pb2.pstatp.com/list/4110013c01f9bd084ef"},{"url":"http://pb3.pstatp.com/list/4110013c01f9bd084ef"}],"uri":"list/4110013c01f9bd084ef","height":426},{"url":"http://p3.pstatp.com/list/4110013c02595298bbc","width":258,"url_list":[{"url":"http://p3.pstatp.com/list/4110013c02595298bbc"},{"url":"http://pb2.pstatp.com/list/4110013c02595298bbc"},{"url":"http://pb3.pstatp.com/list/4110013c02595298bbc"}],"uri":"list/4110013c02595298bbc","height":180},{"url":"http://p3.pstatp.com/list/4110013c0334e4c3af6","width":445,"url_list":[{"url":"http://p3.pstatp.com/list/4110013c0334e4c3af6"},{"url":"http://pb2.pstatp.com/list/4110013c0334e4c3af6"},{"url":"http://pb3.pstatp.com/list/4110013c0334e4c3af6"}],"uri":"list/4110013c0334e4c3af6","height":310}],"has_video":false,"article_type":0,"tag":"digital","has_m3u8_video":0,"keywords":"越狱,苹果,赵薇,多任务,插件,中文输入法,画中画,周迅,ios10,iphone6,App","has_mp4_video":0,"display_url":"http://toutiao.com/group/6284399704093131009/","article_sub_type":0,"bury_count":0,"title":"ios升级抄袭多少越狱插件?ios10这些功能肯定有!","tip":0,"hot":0,"share_url":"http://toutiao.com/group/6284399704093131009/?iid=4464422609&app=news_article","source":"机友i应用","comment_count":18,"article_url":"http://toutiao.com/group/6284399704093131009/","filter_words":[{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:436759864","name":"来源:机友i应用"},{"is_selected":false,"id":"6:19906","name":"ios"},{"is_selected":false,"id":"6:23173","name":"插件"}],"aggr_type":1,"publish_time":1463202011,"action_list":[{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}],"display_title":" ","gallary_image_count":9,"action_extra":"{\"channel_id\":\"3189398999\"}","tag_id":6284399704093131009,"item_id":6284007118089486850,"natant_level":0,"reback_flag":0,"is_subscribe":false,"level":0,"url":"http://toutiao.com/group/6284399704093131009/","repin_count":51,"digg_count":0,"behot_time":1465895498,"cursor":1465895498000,"preload_web":1,"has_image":true,"group_id":6284399704093131009,"middle_image":{"url":"http://p3.pstatp.com/list/4110013c01f9bd084ef","width":611,"url_list":[{"url":"http://p3.pstatp.com/list/4110013c01f9bd084ef"},{"url":"http://pb2.pstatp.com/list/4110013c01f9bd084ef"},{"url":"http://pb3.pstatp.com/list/4110013c01f9bd084ef"}],"uri":"list/4110013c01f9bd084ef","height":426}}]
     */

    private int login_status;
    private int total_number;
    private boolean has_more;
    private String message;
    private boolean has_more_to_refresh;
    /**
     * media_name : 佛佑车友
     * ban_comment : 0
     * abstract :
     * image_list : [{"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6","width":550,"url_list":[{"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb2.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb3.pstatp.com/list/7b6000973a4026ae1b6"}],"uri":"list/7b6000973a4026ae1b6","height":457},{"url":"http://p3.pstatp.com/list/7f900000e83b5be2a96","width":550,"url_list":[{"url":"http://p3.pstatp.com/list/7f900000e83b5be2a96"},{"url":"http://pb2.pstatp.com/list/7f900000e83b5be2a96"},{"url":"http://pb3.pstatp.com/list/7f900000e83b5be2a96"}],"uri":"list/7f900000e83b5be2a96","height":419},{"url":"http://p3.pstatp.com/list/7fb00000e612db9b75a","width":550,"url_list":[{"url":"http://p3.pstatp.com/list/7fb00000e612db9b75a"},{"url":"http://pb2.pstatp.com/list/7fb00000e612db9b75a"},{"url":"http://pb3.pstatp.com/list/7fb00000e612db9b75a"}],"uri":"list/7fb00000e612db9b75a","height":311}]
     * has_video : false
     * article_type : 0
     * tag : news_tech
     * has_m3u8_video : 0
     * keywords : 控制技术,汽车公司,德国,外部照射,嵌入式
     * has_mp4_video : 0
     * display_url : http://toutiao.com/group/6295678043395784961/
     * article_sub_type : 0
     * action_list : [{"action":1,"extra":{},"desc":""},{"action":3,"extra":{},"desc":""},{"action":7,"extra":{},"desc":""},{"action":9,"extra":{},"desc":""}]
     * bury_count : 0
     * title : 有了这个智能车窗,网友直呼再也不用担心泄漏隐私了
     * tip : 0
     * hot : 0
     * share_url : http://toutiao.com/group/6295678043395784961/?iid=4464422609&app=news_article
     * source : 佛佑车友
     * comment_count : 31
     * article_url : http://toutiao.com/group/6295678043395784961/
     * filter_words : [{"is_selected":false,"id":"8:0","name":"重复、旧闻"},{"is_selected":false,"id":"9:1","name":"内容质量差"},{"is_selected":false,"id":"5:407307565","name":"来源:佛佑车友"},{"is_selected":false,"id":"6:19926","name":"隐私"}]
     * aggr_type : 1
     * publish_time : 1465828293
     * group_flags : 131072
     * display_title :
     * gallary_image_count : 5
     * action_extra : {"channel_id":"3189398999"}
     * tag_id : 6295678043395784961
     * item_id : 6295684581643256321
     * natant_level : 0
     * reback_flag : 0
     * is_subscribe : false
     * level : 0
     * url : http://toutiao.com/group/6295678043395784961/
     * repin_count : 151
     * digg_count : 5
     * behot_time : 1465904453
     * cursor : 1465904453000
     * preload_web : 1
     * has_image : true
     * group_id : 6295678043395784961
     * middle_image : {"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6","width":550,"url_list":[{"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb2.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb3.pstatp.com/list/7b6000973a4026ae1b6"}],"uri":"list/7b6000973a4026ae1b6","height":457}
     */

    private LinkedList<DataBean> data;

    public int getLogin_status() {
        return login_status;
    }

    public void setLogin_status(int login_status) {
        this.login_status = login_status;
    }

    public int getTotal_number() {
        return total_number;
    }

    public void setTotal_number(int total_number) {
        this.total_number = total_number;
    }

    public boolean isHas_more() {
        return has_more;
    }

    public void setHas_more(boolean has_more) {
        this.has_more = has_more;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public boolean isHas_more_to_refresh() {
        return has_more_to_refresh;
    }

    public void setHas_more_to_refresh(boolean has_more_to_refresh) {
        this.has_more_to_refresh = has_more_to_refresh;
    }

    public LinkedList<DataBean> getData() {
        return data;
    }

    public void setData(LinkedList<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
        private String media_name;
        private int ban_comment;
        @com.google.gson.annotations.SerializedName("abstract")
        private String abstractX;
        private boolean has_video;
        private int article_type;
        private String tag;
        private int has_m3u8_video;
        private String keywords;
        private int has_mp4_video;
        private String display_url;
        private int article_sub_type;
        private int bury_count;
        private String title;
        private int tip;
        private int hot;
        private String share_url;
        private String source;
        private int comment_count;
        private String article_url;
        private int aggr_type;
        private int publish_time;
        private int group_flags;
        private String display_title;
        private int gallary_image_count;
        private String action_extra;
        private long tag_id;
        private long item_id;
        private int natant_level;
        private int reback_flag;
        private boolean is_subscribe;
        private int level;
        private String url;
        private int repin_count;
        private int digg_count;
        private int behot_time;
        private long cursor;
        private int preload_web;
        private boolean has_image;
        private long group_id;
        /**
         * url : http://p3.pstatp.com/list/7b6000973a4026ae1b6
         * width : 550
         * url_list : [{"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb2.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb3.pstatp.com/list/7b6000973a4026ae1b6"}]
         * uri : list/7b6000973a4026ae1b6
         * height : 457
         */

        private MiddleImageBean middle_image;
        /**
         * url : http://p3.pstatp.com/list/7b6000973a4026ae1b6
         * width : 550
         * url_list : [{"url":"http://p3.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb2.pstatp.com/list/7b6000973a4026ae1b6"},{"url":"http://pb3.pstatp.com/list/7b6000973a4026ae1b6"}]
         * uri : list/7b6000973a4026ae1b6
         * height : 457
         */

        private List<ImageListBean> image_list;
        /**
         * action : 1
         * extra : {}
         * desc :
         */

        private List<ActionListBean> action_list;
        /**
         * is_selected : false
         * id : 8:0
         * name : 重复、旧闻
         */

        private List<FilterWordsBean> filter_words;

        public String getMedia_name() {
            return media_name;
        }

        public void setMedia_name(String media_name) {
            this.media_name = media_name;
        }

        public int getBan_comment() {
            return ban_comment;
        }

        public void setBan_comment(int ban_comment) {
            this.ban_comment = ban_comment;
        }

        public String getAbstractX() {
            return abstractX;
        }

        public void setAbstractX(String abstractX) {
            this.abstractX = abstractX;
        }

        public boolean isHas_video() {
            return has_video;
        }

        public void setHas_video(boolean has_video) {
            this.has_video = has_video;
        }

        public int getArticle_type() {
            return article_type;
        }

        public void setArticle_type(int article_type) {
            this.article_type = article_type;
        }

        public String getTag() {
            return tag;
        }

        public void setTag(String tag) {
            this.tag = tag;
        }

        public int getHas_m3u8_video() {
            return has_m3u8_video;
        }

        public void setHas_m3u8_video(int has_m3u8_video) {
            this.has_m3u8_video = has_m3u8_video;
        }

        public String getKeywords() {
            return keywords;
        }

        public void setKeywords(String keywords) {
            this.keywords = keywords;
        }

        public int getHas_mp4_video() {
            return has_mp4_video;
        }

        public void setHas_mp4_video(int has_mp4_video) {
            this.has_mp4_video = has_mp4_video;
        }

        public String getDisplay_url() {
            return display_url;
        }

        public void setDisplay_url(String display_url) {
            this.display_url = display_url;
        }

        public int getArticle_sub_type() {
            return article_sub_type;
        }

        public void setArticle_sub_type(int article_sub_type) {
            this.article_sub_type = article_sub_type;
        }

        public int getBury_count() {
            return bury_count;
        }

        public void setBury_count(int bury_count) {
            this.bury_count = bury_count;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public int getTip() {
            return tip;
        }

        public void setTip(int tip) {
            this.tip = tip;
        }

        public int getHot() {
            return hot;
        }

        public void setHot(int hot) {
            this.hot = hot;
        }

        public String getShare_url() {
            return share_url;
        }

        public void setShare_url(String share_url) {
            this.share_url = share_url;
        }

        public String getSource() {
            return source;
        }

        public void setSource(String source) {
            this.source = source;
        }

        public int getComment_count() {
            return comment_count;
        }

        public void setComment_count(int comment_count) {
            this.comment_count = comment_count;
        }

        public String getArticle_url() {
            return article_url;
        }

        public void setArticle_url(String article_url) {
            this.article_url = article_url;
        }

        public int getAggr_type() {
            return aggr_type;
        }

        public void setAggr_type(int aggr_type) {
            this.aggr_type = aggr_type;
        }

        public int getPublish_time() {
            return publish_time;
        }

        public void setPublish_time(int publish_time) {
            this.publish_time = publish_time;
        }

        public int getGroup_flags() {
            return group_flags;
        }

        public void setGroup_flags(int group_flags) {
            this.group_flags = group_flags;
        }

        public String getDisplay_title() {
            return display_title;
        }

        public void setDisplay_title(String display_title) {
            this.display_title = display_title;
        }

        public int getGallary_image_count() {
            return gallary_image_count;
        }

        public void setGallary_image_count(int gallary_image_count) {
            this.gallary_image_count = gallary_image_count;
        }

        public String getAction_extra() {
            return action_extra;
        }

        public void setAction_extra(String action_extra) {
            this.action_extra = action_extra;
        }

        public long getTag_id() {
            return tag_id;
        }

        public void setTag_id(long tag_id) {
            this.tag_id = tag_id;
        }

        public long getItem_id() {
            return item_id;
        }

        public void setItem_id(long item_id) {
            this.item_id = item_id;
        }

        public int getNatant_level() {
            return natant_level;
        }

        public void setNatant_level(int natant_level) {
            this.natant_level = natant_level;
        }

        public int getReback_flag() {
            return reback_flag;
        }

        public void setReback_flag(int reback_flag) {
            this.reback_flag = reback_flag;
        }

        public boolean isIs_subscribe() {
            return is_subscribe;
        }

        public void setIs_subscribe(boolean is_subscribe) {
            this.is_subscribe = is_subscribe;
        }

        public int getLevel() {
            return level;
        }

        public void setLevel(int level) {
            this.level = level;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }

        public int getRepin_count() {
            return repin_count;
        }

        public void setRepin_count(int repin_count) {
            this.repin_count = repin_count;
        }

        public int getDigg_count() {
            return digg_count;
        }

        public void setDigg_count(int digg_count) {
            this.digg_count = digg_count;
        }

        public int getBehot_time() {
            return behot_time;
        }

        public void setBehot_time(int behot_time) {
            this.behot_time = behot_time;
        }

        public long getCursor() {
            return cursor;
        }

        public void setCursor(long cursor) {
            this.cursor = cursor;
        }

        public int getPreload_web() {
            return preload_web;
        }

        public void setPreload_web(int preload_web) {
            this.preload_web = preload_web;
        }

        public boolean isHas_image() {
            return has_image;
        }

        public void setHas_image(boolean has_image) {
            this.has_image = has_image;
        }

        public long getGroup_id() {
            return group_id;
        }

        public void setGroup_id(long group_id) {
            this.group_id = group_id;
        }

        public MiddleImageBean getMiddle_image() {
            return middle_image;
        }

        public void setMiddle_image(MiddleImageBean middle_image) {
            this.middle_image = middle_image;
        }

        public List<ImageListBean> getImage_list() {
            return image_list;
        }

        public void setImage_list(List<ImageListBean> image_list) {
            this.image_list = image_list;
        }

        public List<ActionListBean> getAction_list() {
            return action_list;
        }

        public void setAction_list(List<ActionListBean> action_list) {
            this.action_list = action_list;
        }

        public List<FilterWordsBean> getFilter_words() {
            return filter_words;
        }

        public void setFilter_words(List<FilterWordsBean> filter_words) {
            this.filter_words = filter_words;
        }

        public static class MiddleImageBean {
            private String url;
            private int width;
            private String uri;
            private int height;
            /**
             * url : http://p3.pstatp.com/list/7b6000973a4026ae1b6
             */

            private List<UrlListBean> url_list;

            public String getUrl() {
                return url;
            }

            public void setUrl(String url) {
                this.url = url;
            }

            public int getWidth() {
                return width;
            }

            public void setWidth(int width) {
                this.width = width;
            }

            public String getUri() {
                return uri;
            }

            public void setUri(String uri) {
                this.uri = uri;
            }

            public int getHeight() {
                return height;
            }

            public void setHeight(int height) {
                this.height = height;
            }

            public List<UrlListBean> getUrl_list() {
                return url_list;
            }

            public void setUrl_list(List<UrlListBean> url_list) {
                this.url_list = url_list;
            }

            public static class UrlListBean {
                private String url;

                public String getUrl() {
                    return url;
                }

                public void setUrl(String url) {
                    this.url = url;
                }
            }
        }

        public static class ImageListBean {
            private String url;
            private int width;
            private String uri;
            private int height;
            /**
             * url : http://p3.pstatp.com/list/7b6000973a4026ae1b6
             */

            private List<UrlListBean> url_list;

            public String getUrl() {
                return url;
            }

            public void setUrl(String url) {
                this.url = url;
            }

            public int getWidth() {
                return width;
            }

            public void setWidth(int width) {
                this.width = width;
            }

            public String getUri() {
                return uri;
            }

            public void setUri(String uri) {
                this.uri = uri;
            }

            public int getHeight() {
                return height;
            }

            public void setHeight(int height) {
                this.height = height;
            }

            public List<UrlListBean> getUrl_list() {
                return url_list;
            }

            public void setUrl_list(List<UrlListBean> url_list) {
                this.url_list = url_list;
            }

            public static class UrlListBean {
                private String url;

                public String getUrl() {
                    return url;
                }

                public void setUrl(String url) {
                    this.url = url;
                }
            }
        }

        public static class ActionListBean {
            private int action;
            private ExtraBean extra;
            private String desc;

            public int getAction() {
                return action;
            }

            public void setAction(int action) {
                this.action = action;
            }

            public ExtraBean getExtra() {
                return extra;
            }

            public void setExtra(ExtraBean extra) {
                this.extra = extra;
            }

            public String getDesc() {
                return desc;
            }

            public void setDesc(String desc) {
                this.desc = desc;
            }

            public static class ExtraBean {
            }
        }

        public static class FilterWordsBean {
            private boolean is_selected;
            private String id;
            private String name;

            public boolean isIs_selected() {
                return is_selected;
            }

            public void setIs_selected(boolean is_selected) {
                this.is_selected = is_selected;
            }

            public String getId() {
                return id;
            }

            public void setId(String id) {
                this.id = id;
            }

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }
        }
    }
}

 
//代码
package com.example.xlistview;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedList;

import org.com.cctest.view.XListView;
import org.com.cctest.view.XListView.IXListViewListener;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

import com.example.xlistview.Data.DataBean;
import com.google.gson.Gson;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;

public class MainActivity extends Activity implements IXListViewListener {
	String refresh = "http://ic.snssdk.com/2/article/v25/stream/?category=news_tech&count=20&min_behot_time=1465266200&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1465265107&loc_mode=5&lac=4527&cid=28883&iid=4464422609&device_id=17258390367&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SAMSUNG&os_api=19&os_version=4.4.4&uuid=353040417908000&openudid=84c1c7b192991cc6";
    String more="http://ic.snssdk.com/2/article/v25/stream/?category=news_hot&count=20&max_behot_time=1465886546&bd_latitude=4.9E-324&bd_longitude=4.9E-324&bd_loc_time=1465889498&loc_mode=5&lac=4527&cid=28883&iid=4464422609&device_id=17258390367&ac=wifi&channel=baidu&aid=13&app_name=news_article&version_code=460&device_platform=android&device_type=SAMSUNG&os_api=19&os_version=4.4.4&uuid=353040417908000&openudid=84c1c7b192991cc6";
	LinkedList<DataBean> list = new LinkedList<DataBean>();

	Handler handler = new Handler() {
		private MyAdapter myAdapter;

		@SuppressWarnings("unchecked")
		public void handleMessage(android.os.Message msg) {

			switch (msg.what) {
			// 加载初始化数据
			case 1:
				list = (LinkedList<DataBean>) msg.obj;
				myAdapter = new MyAdapter(MainActivity.this, list);

				xlistView.setAdapter(myAdapter);
				// loadOver();
				break;
			// 刷新
			case 2:
				list.clear();
				for (DataBean dataBean : (LinkedList<DataBean>)msg.obj) {
					//象开头添加
					list.addFirst(dataBean);
				}
				// 刷新适配器
				myAdapter.notifyDataSetChanged();
				loadOver();
				break;
			// 加载更多
			case 3:

				for (DataBean dataBean : (LinkedList<DataBean>)msg.obj) {
					//象结尾添加
					list.addLast(dataBean);
				}
				// 刷新适配器
				myAdapter.notifyDataSetChanged();
				loadOver();
				break;
			}

		};

	};

	private XListView xlistView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		xlistView = (XListView) findViewById(R.id.xlistView);

		// 下拉刷新是否激活
		xlistView.setPullRefreshEnable(true);
		// 加载更多是否激活
		xlistView.setPullLoadEnable(true);
		// xlistView刷新和加载更多的监听
		xlistView.setXListViewListener(this);

		getData(1,refresh);


	}

	public void getData(final int i,String path) {

		HttpUtils httpUtils = new HttpUtils();
		
		httpUtils.configCurrentHttpCacheExpiry(0);
		
		httpUtils.send(HttpMethod.GET, path, new RequestCallBack<String>() {

			@Override
			public void onFailure(HttpException arg0, String arg1) {

			}

			@Override
			public void onSuccess(ResponseInfo<String> arg0) {

				String result = arg0.result;

				Gson gson = new Gson();

				Data data = gson.fromJson(result, Data.class);
				Message msg = Message.obtain();
				msg.obj = data.getData();
				msg.what = i;
				handler.sendMessage(msg);
			}
		});

	}

	// 停止加载更多/刷新
	public void loadOver() {
		// 停止加载更多
		xlistView.stopLoadMore();
		// 停止刷新
		xlistView.stopRefresh();
		//设置刷新时的时间
		xlistView.setRefreshTime(getTime());
		
		
	}

	/**
	 * 刷新
	 */
	@Override
	public void onRefresh() {

		getData(2,refresh);

	}

	/**
	 * 加载更多
	 */
	@Override
	public void onLoadMore() {

		getData(3,more);
	}

public String getTime(){
	
	
	SimpleDateFormat format=new SimpleDateFormat("hh:mm:ss"); 
	
	Date date=new Date();
	String time = format.format(date);
	return time;
	
	
}

}
//适配器

package com.example.xlistview;

import java.util.List;

import com.example.xlistview.Data.DataBean;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class MyAdapter extends BaseAdapter {

	Context context;
	List<DataBean> list;

	public MyAdapter(Context context, List<DataBean> list) {
		this.context = context;
		this.list = list;
	}

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

	@Override
	public Object getItem(int position) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public long getItemId(int position) {
		return 0;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {

		View view = View.inflate(context, android.R.layout.simple_list_item_1,
				null);

		TextView text1 = (TextView) view.findViewById(android.R.id.text1);

		text1.setText(list.get(position).getTitle());

		return view;
	}

}

//布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >


    
    <org.com.cctest.view.XListView
               
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        
        android:id="@+id/xlistView"
        
        
        ></org.com.cctest.view.XListView>
    


</RelativeLayout>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值