您的位置:首页 > 其它

安卓今日头条的框架的搭建

2017-09-15 19:04 459 查看

        


主要的思路:

                              第一、在主的activity中写DrawerLayout加Viewpager(vp)实现侧拉的功能

                                         写viewpager(vp1)加载四个Fragment

                            第二,在第一个Fragment中加载TabLayout与Viewpager实现导航栏的滑动


                                       写一个viewpager与一个下圆点的联动,在写个XListView实现解析后新闻条目的上拉加载,下拉刷新,gson的架包


      


                                       在适配器中判断子条目的不同布局,ImageLoader加载图片 (需要使用universal_Imager_Loader的架包)


       //activty_main的布局  

     

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/dl"
android:layout_width="match_parent"
android:layout_height="match_parent"

>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="690dp"
android:id="@+id/vp"
android:layout_weight="2"

/>

<RadioGroup
android:layout_width="match_parent"
android:layout_height="40dp"
android:id="@+id/rg"
android:layout_weight="8"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb1"
android:text="新闻"
android:layout_margin="15dp"
android:textSize="20sp"
android:button="@null"
android:layout_gravity="center"
android:gravity="center"
android:checked="true"
android:layout_weight="1"
android:background="@drawable/se"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb2"
android:text="关注"
android:layout_margin="15dp"
android:textSize="20sp"
android:button="@null"
android:layout_gravity="center"
android:gravity="center"
android:layout_weight="1"
android:background="@drawable/se"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/rb3"
android:text="动态"
android:layout_margin="15dp"
android:textSize="20sp"
android:button="@null"
android:layout_gravity="center"
android:gravity="center"
android:layout_weight="1"
android:background="@drawable/se"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/rb4"
android:text="设置"
android:layout_margin="15dp"
android:textSize="20sp"
android:button="@null"
android:layout_gravity="center"
android:gravity="center"
android:background="@drawable/se"/>

</RadioGroup>
</LinearLayout>

<ListView
android:layout_width="200dp"
android:layout_height="match_parent"
android:id="@+id/lv"
android:background="#fff"
android:entries="@array/news"
android:layout_gravity="left">

</ListView>
</android.support.v4.widget.DrawerLayout>

//MainActivit

//在drawale包下创建selector.xml的文件控件按钮被选中的颜色

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@color/colorPrimary"/>
</selector>


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.RadioGroup;

import com.example.shenxuesong.jinritoutiao.Adapter.MyAdapter;
import com.example.shenxuesong.jinritoutiao.Fragment.Fragment01;
import com.example.shenxuesong.jinritoutiao.Fragment.Fragment02;
import com.example.shenxuesong.jinritoutiao.Fragment.Fragment03;
import com.example.shenxuesong.jinritoutiao.Fragment.Fragment04;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends FragmentActivity implements RadioGroup.OnCheckedChangeListener{
private ViewPager vp;
private RadioGroup rg;
private List<Fragment>list=new ArrayList<Fragment>();
private ListView lv;
private DrawerLayout dl;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//查找组件
vp=(ViewPager)findViewById(R.id.vp);
rg=(RadioGroup)findViewById(R.id.rg);
lv=(ListView)findViewById(R.id.lv) ;
dl=(DrawerLayout)findViewById(R.id.dl);
//造数据
list.add(new Fragment01());
list.add(new Fragment02());
list.add(new Fragment03());
list.add(new Fragment04());
//设置适配器
MyAdapter myAdapter = new MyAdapter(getSupportFragmentManager(),list);
vp.setAdapter(myAdapter);

//实现侧拉的功能
init();

//设置viewpager的监听事件,使vp与rg有联动效果
 vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

}

@Override
public void onPageSelected(int position) {
switch (position){
case 0:
rg.check(R.id.rb1);
break;
case 1:
rg.check(R.id.rb2);
break;
case 2:
rg.check(R.id.rb3);
break;
case 3:
rg.check(R.id.rb4);
break;

}
}

@Override
public void onPageScrollStateChanged(int state) {

}
});
rg.setOnCheckedChangeListener(this);

}

@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i) {
case R.id.rb1:
vp.setCurrentItem(0);

break;

case R.id.rb2:
vp.setCurrentItem(1);
break;
case R.id.rb3:
vp.setCurrentItem(2);
break;
case R.id.rb4:
vp.setCurrentItem(3);
break;
}

}
private void init() {
//打开侧拉
dl.openDrawer(lv);
 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

}
});
}

}
//给viewpager写适配器
public class MyAdapter extends FragmentPagerAdapter {
private List<Fragment> list;

public MyAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.list = list;
}

@Override
public int getCount() {
return list.size();
}

@Override
public Fragment getItem(int position) {
return list.get(position);
}

}


//写四个Fragment的类和布局

主要的操作都在Fragment01中下面就着重对其进行展示(TabLayout与ViewPagerj结合使用,实现导航菜单的滑动功能)

fragment01的布局 TabLayout需要导包design

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/dl">
<!--实现导航栏的滑动功能-->
<android.support.design.widget.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/table"
app:tabGravity="center"
app:tabIndicatorColor="#f00"
app:tabMode="scrollable"
android:background="#22f"
app:tabSelectedTextColor="#ff0000"
app:tabTextColor="#fff"
>

</android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pager"
/>

</LinearLayout>


//Fragment01实现航栏的滑动功能
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.shenxuesong.jinritoutiao.R;

import java.util.ArrayList;
import java.util.List;

public class Fragment01 extends Fragment  {

private TabLayout tab;
private ViewPager vp1;

private List<String> list=new ArrayList<String>();//收集标题

@Override
public View onCreateView(LayoutInflater inflater,  ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment01, container,false);
//查找控件
tab = (TabLayout) view.findViewById(R.id.table);
vp1 = (ViewPager) view.findViewById(R.id.pager);

//tab的标题
list.add("头条");
list.add("社会");
list.add("国内");
list.add("国际");
list.add("娱乐");
list.add("体育");
list.add("军事");
list.add("科技");
list.add("财经");
list.add("时尚");

//tablayout和viewpager关联
tab.setupWithViewPager(vp1);
//设置viewpager适配器
vp1.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {

@Override
public CharSequence getPageTitle(int position) {

return list.get(position);
}

@Override
public Fragment getItem(int position) {
//实例化一个Fragment加载Xlistview
NewFragment  newfragment = new NewFragment();
Bundle bundle = new Bundle();
if(list.get(position).equals("头条")){
bundle.putString("name","top");
}
else
if(list.get(position).equals("社会")){
bundle.putString("name","shehui");
}
else
if(list.get(position).equals("国内")){
bundle.putString("name","guonei");
}
else
if(list.get(position).equals("国际")){
bundle.putString("name","guoji");
}
else
if(list.get(position).equals("娱乐")){
bundle.putString("name","yule");
}
else
if(list.get(position).equals("财经")){
bundle.putString("name","caijing");
}
else
if(list.get(position).equals("军事")){
bundle.putString("name","junshi");
}
else
if(list.get(position).equals("科技")){
bundle.putString("name","keji");
}
else
if(list.get(position).equals("体育")){
bundle.putString("name","tiyu");
}
else
if(list.get(position).equals("时尚")){
bundle.putString("name","shishang");
}
//activity与fragment 1.getset,2.接口回调,3.setArguments ,getAraguments
newfragment.setArguments(bundle);
//相当于加载了一个Fragment
return newfragment;
}

@Override
public int getCount() {
return list.size();
}
});

return view;
}

}


//NewFragment实现了所有新闻的展示,它是替换了Fragment01,

在此类中会运用到网络请解析json数据、XListview、ImageLoader等知识点

//XListView的依赖包(配置下面的两句依赖就可以实现XListView )

maven{url'https://jitpack.io'}

compile 'com.github.ForgiveAll:Xlistview:v1.0'

newFragment的布局

<?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">

<!--蓝色部分实现是自动轮播的图片、图片上的标题、小圆点-->

 <android.support.v4.view.ViewPager
android:layout_width="wrap_content"
android:layout_height="200dp"
android:id="@+id/vp"
android:layout_marginTop="10dp"

/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"
android:layout_marginTop="-40dp"
android:layout_marginLeft="20dp"
android:textColor="#22f"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:gravity="center"
android:id="@+id/ll"
android:orientation="horizontal"
android:layout_marginTop="-35dp"
>

</LinearLayout>

 <!--实现是展示的是上拉加载,下拉刷新-->

 <me.maxwin.view.XListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/list"
>
</me.maxwin.view.XListView>

</LinearLayout>


//圆点的视图布局(item.xml)
<?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">
<View
android:layout_width="8dp"
android:layout_height="8dp"
android:layout_margin="10dp"
android:id="@+id/view"
android:background="@drawable/shape1"
/>
</LinearLayout>
//在drawable的视图下面创建shape.xml、shape1.xml控制圆点的颜色
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#80000000"/>
<corners android:radius="8dp"/>

</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#f00"/>
<corners android:radius="8dp"/>
</shape>


import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.shenxuesong.jinritoutiao.Adapter.Myadpader1;
import com.example.shenxuesong.jinritoutiao.JavaBean;
import com.example.shenxuesong.jinritoutiao.R;
import com.example.shenxuesong.jinritoutiao.User;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageSize;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;

import me.maxwin.view.XListView;

public class NewFragment extends Fragment implements XListView.IXListViewListener{
private List<User.ResultBean.DataBean> data;
private  Myadpader1 myadpader;
private ViewPager vp;
private TextView tv;
private LinearLayout ll;
private XListView list;

private static final String surl="https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=6&page=1";
private List<JavaBean.NewslistBean> newslist;

private List<View> dolist=new ArrayList<View>();
private List<String> str=new ArrayList<String>();
private List<ImageView> imagelist=new ArrayList<ImageView>();
private int current=0;
private int old_list=0;
private  String string;
private Handler h=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==1){

int i=msg.arg1;
//设置viewpager当前的播放位置
 vp.setCurrentItem(i);
//设置当前的标题对应的图片
 tv.setText(str.get(i%imagelist.size()));
//设置圆点当然播放对应的图片的颜色的变化
  dolist.get(old_list).setBackgroundResource(R.drawable.shape);
dolist.get(i%imagelist.size()).setBackgroundResource(R.drawable.shape1);
old_list=i%imagelist.size();
}

}
};

 @Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
 @Nullable Bundle savedInstanceState) {

//找到布局文件
View v = View.inflate(getActivity(), R.layout.listview, null);
//ListView控件
list = (XListView)v.findViewById(R.id.list);
vp= (ViewPager) v.findViewById(R.id.vp);
tv=(TextView)v.findViewById(R.id.tv) ;
ll=(LinearLayout)v.findViewById(R.id.ll);
//设置打开上拉下拉的开关
list.setPullLoadEnable(true);
//设置
 list.setXListViewListener(this);

return v;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

Bundle bundle = getArguments();
//接收传递过来的值
string = bundle.getString("name");
//调用解析方法
Jiexi(string);
//获取图片的路径及biati
getPricUrLandTitle();
}
//解析方法
private void Jiexi(final String string) {
//使用异步
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=" + string + "&key=597b4f9dcb50e051fd725a9ec54d6653");
HttpURLConnection conne= (HttpURLConnection) url.openConnection();

conne.setConnectTimeout(5000);
conne.setReadTimeout(5000);
int responseCode = conne.getResponseCode();
if (responseCode==200){
InputStream in = conne.getInputStream();

byte[] by=new byte[1024];
int len=0;

while ((len=in.read(by))!=-1){
str+=new String(by,0,len);
}

}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return str;
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
//Gson解析
Gson gson = new Gson();
User user = gson.fromJson(s, User.class);
data = user.getResult().getData();
//listview适配器
myadpader = new Myadpader1(data, getActivity());
list.setAdapter(myadpader);

}
}.execute();

}
//获取图片的路径及biati
private void getPricUrLandTitle() { //异步任务

new AsyncTask<String,Integer,String>(){

@Override protected String doInBackground(String... strings) {

String str="";

try {

 URL url = new URL(surl);

 HttpURLConnection http=(HttpURLConnection) url.openConnection();

int code = http.getResponseCode();

 if(code==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);

 Gson gson = new Gson();

newslist = gson.fromJson(s, JavaBean.class).getNewslist();

 for (int i=0;i<newslist.size();i++){

 JavaBean.NewslistBean newslistBean = newslist.get(i);

String picUrl = newslistBean.getPicUrl();

 String title = newslistBean.getTitle();

Log.i("TAG",picUrl);

//获取网络请求的图片数据,并把它添加到imagelist中

getImageView(picUrl);

//得到圆点

 getYuanDian();

//标题

str.add(title);

}

 //执行的方法

init();

 }

 }.execute();

 }

 private void getImageView(String picUrl) {

 ImageView imageView = new ImageView(getActivity());

 imageView.setScaleType(ImageView.ScaleType.FIT_XY);

ImageSize size=new ImageSize(200,100);

ImageLoader.getInstance().displayImage(picUrl,imageView,size);

 imagelist.add(imageView); }

private void getYuanDian() {

 View view = LayoutInflater.from(getActivity()).inflate(R.layout.item, null);

 View view1 = view.findViewById(R.id.view);

//将试图添加到收集圆点的集合中

dolist.add(view1);

//将圆点的视图加载在Linearlayout的占位上

ll.addView(view);

 }

private void init() {

//设置适配器

vp.setAdapter(new PagerAdapter() {

 @Override

 public int getCount() {

return Integer.MAX_VALUE; }

 @Override

public boolean isViewFromObject(View view, Object object) {

return view==object; }

 @Override

public Object instantiateItem(ViewGroup container, int position) {

  View imageView = imagelist.get(position % imagelist.size());

container.addView(imageView); return imageView; }

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

container.removeView((View) object);

}

});

//设置圆点的第一个被选中

dolist.get(0).setBackgroundResource(R.drawable.shape1);

 //设置viewpager的当前位置

 vp.setCurrentItem(50000000);

//启动定时器

Timer timer = new Timer();

 timer.schedule(new TimerTask() {

@Override

 public void run() {

current=vp.getCurrentItem()+1;

  Message msg = Message.obtain();

msg.arg1=current;

 msg.what=1;

h.sendMessage(msg);

}

}, 3000, 2000); }

@Override

public void onRefresh() {

Jiexi(surl);

stopLoad();

 }

@Override

 public void onLoadMore() {

 //使用异步进行网络请求数据

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=" + string + "&key=597b4f9dcb50e051fd725a9ec54d6653");

HttpURLConnection conne= (HttpURLConnection) url.openConnection();

conne.setConnectTimeout(5000);

 

conne.setReadTimeout(5000);

int responseCode = conne.getResponseCode();

 if (responseCode==200){

InputStream in = conne.getInputStream();

byte[] by=new byte[1024];

int len=0;

while ((len=in.read(by))!=-1){

str+=new String(by,0,len);

}

}

} catch (MalformedURLException e)

 { e.printStackTrace(); }

catch (IOException e)

{ e.printStackTrace(); }

return str;

 }

 @Override

 protected void onPostExecute(String s) {

super.onPostExecute(s);

//Gson解析

Gson gson = new Gson();

User user = gson.fromJson(s, User.class);

List<User.ResultBean.DataBean> data1 = user.getResult().getData(); data.addAll(data1);

//listview适配器

myadpader.notifyDataSetChanged();
stopLoad();


}

 }.execute();

}

public void stopLoad(){

list.stopRefresh();

list.stopLoadMore();

list.setRefreshTime("刚刚");

  }

 }

//Xlistview写适配器
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.example.shenxuesong.jinritoutiao.R;
import com.example.shenxuesong.jinritoutiao.User;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageSize;

import java.util.ArrayList;
import java.util.List;

public class Myadpader1 extends BaseAdapter {
private List<User.ResultBean.DataBean> data=new ArrayList<User.ResultBean.DataBean>();
private Context context;

public Myadpader1(List<User.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 null;
}

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

//判断子条目的布局
 @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) {
//Xlistview的优化

 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);
//ImagerLoader加载图片
 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.xml,item2.xml,item3.xml)
<?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 con=new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(con);
}
}

//最后AndroidMainfest.xml的权限的配置
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.shenxuesong.pulltorerfuer">
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:name=".MyApplication"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>




       

                                   

                                 

                       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: