首先导入三个类
//第一个类
/**
* @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>