//先导入library包(import Moudle),然后APP 依赖的library包 并且要保持![](https://img-blog.csdn.net/20170915154632010?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU1hTMTIwNzMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20170915154711126?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvU1hTMTIwNzMw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
//然后进行Activity_main的布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:id="@+id/pull_refresh_list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:cacheColorHint="#000000" android:divider="#19000000" android:dividerHeight="4dp" android:fadingEdge="none" android:fastScrollEnabled="false" android:footerDividersEnabled="false" android:headerDividersEnabled="false" android:smoothScrollbar="true" ptr:ptrAnimationStyle="rotate" ptr:ptrHeaderTextColor="#ffffff" ptr:ptrHeaderSubTextColor="#00ffff" ptr:ptrHeaderBackground="@null" ptr:ptrDrawable="@mipmap/ic_launcher"/> </LinearLayout>
//进行相关的方法操作
mport android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.ListView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.util.List; public class MainActivity extends AppCompatActivity { private PullToRefreshListView lv; private int i=1; private Myadapter myadapter; private List<JavaBean.ResultBean.DataBean> data; private static final String surl="http://v.juhe.cn/toutiao/index?type=&key=2f092bd9ce76c0257052d6d3c93c11b4"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv=(PullToRefreshListView)findViewById(R.id.pull_refresh_list); //解析数据 jiexi(); //刷新的监听 lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() { @Override public void onRefresh(PullToRefreshBase<ListView> refreshView) { new AsyncTask<String,Integer,String>(){ @Override protected String doInBackground(String... strings) { String str=""; try { URL url = new URL("http://v.juhe.cn/toutiao/index?type="+i+"&key=2f092bd9ce76c0257052d6d3c93c11b4"); HttpURLConnection http=(HttpURLConnection)url.openConnection(); http.setReadTimeout(2000); http.setConnectTimeout(2000); int rc = http.getResponseCode(); if(rc==200){ InputStream in = http.getInputStream(); byte[] b=new byte[1024]; int len=0; while((len=in.read(b))!=-1){ str+=new String(b,0,len); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return str; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.i("TAG",s); List<JavaBean.ResultBean.DataBean> data = new Gson().fromJson(s, JavaBean.class).getResult().getData(); Log.i("TAG",data.size()+""); //设置适配器 lv.setAdapter(new Myadapter(data,MainActivity.this)); } }.execute(); } }); //加载的刷新 lv.setOnLastItemVisibleListener(new PullToRefreshBase.OnLastItemVisibleListener() { @Override public void onLastItemVisible() { new AsyncTask<String,Integer,String>(){ @Override protected String doInBackground(String... strings) { String str=""; try { i++; URL url = new URL("http://v.juhe.cn/toutiao/index?type="+i+"&key=2f092bd9ce76c0257052d6d3c93c11b4"); HttpURLConnection http=(HttpURLConnection)url.openConnection(); http.setReadTimeout(2000); http.setConnectTimeout(2000); int rc = http.getResponseCode(); if(rc==200){ InputStream in = http.getInputStream(); byte[] b=new byte[1024]; int len=0; while((len=in.read(b))!=-1){ str+=new String(b,0,len); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return str; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.i("TAG",s); List<JavaBean.ResultBean.DataBean> data1 = new Gson().fromJson(s, JavaBean.class).getResult().getData(); Log.i("TAG", MainActivity.this.data.size()+""); //设置适配器 data.addAll(data1); myadapter.notifyDataSetChanged(); //停止刷新 lv.onRefreshComplete(); } }.execute(); } }); } private void jiexi() { new AsyncTask<String,Integer,String>(){ @Override protected String doInBackground(String... strings) { String str=""; try { URL url = new URL("http://v.juhe.cn/toutiao/index?type="+i+"&key=2f092bd9ce76c0257052d6d3c93c11b4"); HttpURLConnection http=(HttpURLConnection)url.openConnection(); http.setReadTimeout(2000); http.setConnectTimeout(2000); int rc = http.getResponseCode(); if(rc==200){ InputStream in = http.getInputStream(); byte[] b=new byte[1024]; int len=0; while((len=in.read(b))!=-1){ str+=new String(b,0,len); } } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return str; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.i("TAG",s); data = new Gson().fromJson(s, JavaBean.class).getResult().getData(); Log.i("TAG",data.size()+""); //设置适配器 myadapter = new Myadapter(data, MainActivity.this); lv.setAdapter(myadapter); } }.execute(); } }
//配置适配器和判断子布局的多条目import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageSize; import java.util.List; public class Myadapter extends BaseAdapter { private List<JavaBean.ResultBean.DataBean> data; private Context context; public Myadapter(List<JavaBean.ResultBean.DataBean> data, Context context) { this.data = data; this.context = context; } @Override public int getCount() { return data.size(); } @Override public Object getItem(int i) { return data.get(i); } @Override public long getItemId(int i) { return i; } //判断子条目的布局 @Override public int getItemViewType(int position) { int re=0; if(data.get(position).getThumbnail_pic_s()!=null&&data.get(position).getThumbnail_pic_s02()!=null&&data.get(position).getThumbnail_pic_s03()!=null){ re=0; } else if(data.get(position).getThumbnail_pic_s()!=null&&data.get(position).getThumbnail_pic_s02()!=null&&data.get(position).getThumbnail_pic_s03()==null){ re=1; } else if(data.get(position).getThumbnail_pic_s()!=null&&data.get(position).getThumbnail_pic_s02()==null&&data.get(position).getThumbnail_pic_s03()==null){ re=2; } return re; } @Override public int getViewTypeCount() { return 3; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder1 holder1=null; ViewHolder2 holder2=null; ViewHolder3 holder3=null; int re = getItemViewType(i); if(re==0){ if(view==null){ view=View.inflate(context,R.layout.item1,null); holder1=new ViewHolder1(); holder1.tv=(TextView) view.findViewById(R.id.tv); holder1.image1=(ImageView)view.findViewById(R.id.image1); holder1.image2=(ImageView)view.findViewById(R.id.image2); holder1.image3=(ImageView)view.findViewById(R.id.image3); view.setTag(holder1); }else{ holder1= (ViewHolder1) view.getTag(); } holder1.tv.setText(data.get(i).getTitle()+"\n"+data.get(i).getAuthor_name()+"\n"+data.get(i).getDate()); String thumbnail_pic_s = data.get(i).getThumbnail_pic_s(); String thumbnail_pic_s02 = data.get(i).getThumbnail_pic_s02(); String thumbnail_pic_s03 = data.get(i).getThumbnail_pic_s03(); ImageSize size=new ImageSize(100,100); ImageLoader.getInstance().displayImage(thumbnail_pic_s,holder1.image1,size); ImageLoader.getInstance().displayImage(thumbnail_pic_s02,holder1.image2,size); ImageLoader.getInstance().displayImage(thumbnail_pic_s03,holder1.image3,size); }else if(re==1){ if(view==null){ view=View.inflate(context,R.layout.item2,null); holder2=new ViewHolder2(); holder2.tv=(TextView) view.findViewById(R.id.tv); holder2.image1=(ImageView)view.findViewById(R.id.image1); holder2.image2=(ImageView)view.findViewById(R.id.image2); view.setTag(holder2); }else{ holder2= (ViewHolder2) view.getTag(); } holder2.tv.setText(data.get(i).getTitle()+"\n"+data.get(i).getAuthor_name()+"\n"+data.get(i).getDate()); String thumbnail_pic_s = data.get(i).getThumbnail_pic_s(); String thumbnail_pic_s02 = data.get(i).getThumbnail_pic_s02(); ImageSize size=new ImageSize(100,100); ImageLoader.getInstance().displayImage(thumbnail_pic_s,holder2.image1,size); ImageLoader.getInstance().displayImage(thumbnail_pic_s02,holder2.image2,size); }else if(re==2){ if(view==null){ view= View.inflate(context,R.layout.item3,null); holder3=new ViewHolder3(); holder3.tv=(TextView) view.findViewById(R.id.tv); holder3.image1=(ImageView)view.findViewById(R.id.image1); view.setTag(holder3); }else{ holder3= (ViewHolder3) view.getTag(); } holder3.tv.setText(data.get(i).getTitle()+"\n"+data.get(i).getAuthor_name()+"\n"+data.get(i).getDate()); String thumbnail_pic_s = data.get(i).getThumbnail_pic_s(); ; ImageSize size=new ImageSize(100,100); ImageLoader.getInstance().displayImage(thumbnail_pic_s,holder3.image1,size); } return view; } class ViewHolder3{ TextView tv; ImageView image1; } class ViewHolder2{ TextView tv; ImageView image1; ImageView image2; } class ViewHolder1{ TextView tv; ImageView image1; ImageView image2; ImageView image3; } }
//子布局多条目的布局(item1,item2,item3)<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image1"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image2"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image3"/> </LinearLayout> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image1"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image2"/> </LinearLayout> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/tv"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/image1"/> </LinearLayout>
//加载图片的类import android.app.Application; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(configuration); } }