主页面
import android.graphics.Color;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private HorizontalScrollView hsv;private LinearLayout linMenu;
private ViewPager viewPager;
//存放菜单TextView组件
private List<TextView> menuLists=new ArrayList<>();
private List<String> menuText=new ArrayList<>();
private List<String> tabsType=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
hsv = findViewById(R.id.hsv);
linMenu = findViewById(R.id.lin_menu);
viewPager = findViewById(R.id.vp);
//初使化数据
initData();
//初使化横向滑动菜单
initMenu();
//设置viewpager的适配器
MyPagerAdapter adapter=new MyPagerAdapter(getSupportFragmentManager());
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//设置选中的菜单,改变文本颜色
setSelectedMenu(position);
//设置滚动
setScrollMenu(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
viewPager.setOffscreenPageLimit(menuText.size());
}
/**
* 设置横向滑动菜单 滚动到 指定的菜单 项
* @param index
*/
private void setScrollMenu(int index){
//得到组件
TextView tvMenu=menuLists.get(index);
float tx = tvMenu.getX();//得到x坐标
//scrollTo(x,y):滚动 y-代表垂直方向的滚动 x-代表水平方向的滚动
hsv.scrollTo((int)tx,0);
}
private void initData() {
menuText.add("头条");
menuText.add("社会");
menuText.add("国内");
menuText.add("国际");
menuText.add("娱乐");
menuText.add("体育");
menuText.add("军事");
menuText.add("科技");
menuText.add("财经");
menuText.add("时尚");
tabsType.add("top");
tabsType.add("shehui");
tabsType.add("guonei");
tabsType.add("guoji");
tabsType.add("yule");
tabsType.add("tiyu");
tabsType.add("junshi");
tabsType.add("keji");
tabsType.add("caijing");
tabsType.add("shishang");
}
private void initMenu() {
//将TextView组件 添加到 linMenu 组件中
for (int i = 0; i < menuText.size(); i++) {
//创建菜单 TextView
TextView textView = new TextView(this);
textView.setText(menuText.get(i));
if (i == 0) {
textView.setTextColor(Color.RED);//设置字体颜色是红色
} else {
textView.setTextColor(Color.BLACK);//设置字体颜色是黑色
}
//设置标签,用来记录它是第几个菜单
textView.setTag(i);
//添加点击事件
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//viewpager切换到不同的页面
viewPager.setCurrentItem(Integer.parseInt(view.getTag() + ""));
//设置颜色
setSelectedMenu(Integer.parseInt(view.getTag() + ""));
}
});
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 5, 8, 0);//设置菜单之间的间隔
//进行添加 addView
linMenu.addView(textView, params);
//添加到集合中
menuLists.add(textView);
}
}
/**
* 将所有的菜单遍历一遍,设置选中的菜单字体颜色为红色,其余是黑色
* @param menuIndex
*/
private void setSelectedMenu(int menuIndex){//menuIndex:当前选中菜单的下标
for(int i=0;i<menuLists.size();i++){
if(i==menuIndex){
menuLists.get(i).setTextColor(Color.RED);//选中的颜色
}else {
menuLists.get(i).setTextColor(Color.BLACK);
}
}
}
class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
//用来返回每个页面
@Override
public Fragment getItem(int position) {//position:页面的下标
RecommendFr fr=new RecommendFr();
Bundle bundle=new Bundle();
bundle.putString("tt",tabsType.get(position));
fr.setArguments(bundle);
Toast.makeText(MainActivity.this,tabsType.get(position)+"--"+position,Toast.LENGTH_SHORT).show();
return fr;
}
//返回页面的数量
@Override
public int getCount() {
return menuText.size();
}
}
}
fragment布局
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.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Type;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import zhanghaijiao.bawei.com.yuekao_moni.adapter.MyLvAdapter;
import zhanghaijiao.bawei.com.yuekao_moni.bean.ResultData;
import zhanghaijiao.bawei.com.yuekao_moni.utils.MyTask;
import zhanghaijiao.bawei.com.yuekao_moni.utils.NetStateUtil;
/**
* Created by jane on 2018/3/1.
*/
public class RecommendFr extends Fragment {
private String urlpath="";
private ListView listView;
private MyLvAdapter adapter;
private Handler myHandler=new Handler(){
@Override
public void handleMessage(Message msg) {
//设置适配器,进行显示
List<ResultData.ResultBean.DataBean> data =(List<ResultData.ResultBean.DataBean>) msg.obj;
//设置适配器
MyLvAdapter adapter=new MyLvAdapter(getActivity(),data);
listView.setAdapter(adapter);
}
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.recomend,container,false);
listView = v.findViewById(R.id.lv);
//接收参数并拼接字符串
Bundle arguments = getArguments();
String str=arguments.getString("tt");
urlpath="http://v.juhe.cn/toutiao/index?type="+str+"&key=597b4f9dcb50e051fd725a9ec54d6653";
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//请求数据
requestNetData();
}
private void requestNetData() {
if(NetStateUtil.isConn(getActivity())){
//进行网络请求
new Thread(){
@Override
public void run() {
getData();
}
}.start();
}else {
NetStateUtil.showNoNetWorkDlg(getActivity());
}
}
private void getData() {
try {
URL url=new URL(urlpath);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
int code=urlConnection.getResponseCode();
if(code==200){
//获取数据
InputStream inputStream = urlConnection.getInputStream();
String jsonData=inputstreamToString(inputStream);
//进行解析
Gson gson=new Gson();
ResultData rdata=gson.fromJson(jsonData, ResultData.class);
//给主线程发送消息
Message msg=Message.obtain();
msg.obj=rdata.getResult().getData();
myHandler.sendMessage(msg);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public String inputstreamToString(InputStream stream){
StringBuilder builder=new StringBuilder();
try {
BufferedReader reader=new BufferedReader(new InputStreamReader(stream));
String str;
while ((str=reader.readLine())!=null){
builder.append(str);
}
} catch (IOException e) {
e.printStackTrace();
}
return builder.toString();
}
}
多条目的适配器
import android.content.Context;
import android.graphics.Bitmap;
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.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import java.util.List;
import zhanghaijiao.bawei.com.yuekao_moni.R;
import zhanghaijiao.bawei.com.yuekao_moni.bean.ResultData;
/**
* Created by jane on 2018/2/27.
*/
public class MyLvAdapter extends BaseAdapter {
private Context context;
private List<ResultData.ResultBean.DataBean> results;
private final int ONE=0;
private final int TWO=1;
private final int THREE=2;
private DisplayImageOptions options;
public MyLvAdapter(Context context, List<ResultData.ResultBean.DataBean> results) {
this.context = context;
this.results = results;
options = new DisplayImageOptions.Builder()
.cacheInMemory(true)//使用内存缓存
.cacheOnDisk(true)//使用磁盘缓存
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式
.imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
// .displayer(new RoundedBitmapDisplayer(50))//设置圆角
.build();
}
@Override
public int getViewTypeCount() {
return 3;
}
@Override
public int getItemViewType(int position) {
//得到以下三个图片url
String s=results.get(position).getThumbnail_pic_s();
String s02=results.get(position).getThumbnail_pic_s02();
String s03=results.get(position).getThumbnail_pic_s03();
if(s!=null && s02==null && s03==null){
return ONE;
}else if(s==null && s02!=null && s03!=null){
return TWO;
}else if(s!=null && s02!=null && s03!=null){
return THREE;
}else {
return ONE;
}
}
@Override
public int getCount() {
return results.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
int type = getItemViewType(i);
if(type==ONE){
ViewHolder1 viewHolder1 = null;
if (view==null){
view= View.inflate(context, R.layout.one_img,null);
viewHolder1 = new ViewHolder1();
viewHolder1.img1 = view.findViewById(R.id.img1);
viewHolder1.title1 = view.findViewById(R.id.tv_title);
view.setTag(viewHolder1);
}else{
viewHolder1= (ViewHolder1) view.getTag();
}
viewHolder1.title1.setText(results.get(i).getTitle());
ImageLoader.getInstance().displayImage(results.get(i).getThumbnail_pic_s(), viewHolder1.img1, options);
return view;
}else if(type==TWO){
ViewHolder2 viewHolder2 = null;
if (view==null){
view= View.inflate(context,R.layout.two_img,null);
viewHolder2 = new ViewHolder2();
viewHolder2.img1 = view.findViewById(R.id.img1);
viewHolder2.img2 = view.findViewById(R.id.img2);
viewHolder2.title1 = view.findViewById(R.id.tv_title);
view.setTag(viewHolder2);
}else{
viewHolder2= (ViewHolder2) view.getTag();
}
viewHolder2.title1.setText(results.get(i).getTitle());
ImageLoader.getInstance().displayImage(results.get(i).getThumbnail_pic_s(), viewHolder2.img1, options);
ImageLoader.getInstance().displayImage(results.get(i).getThumbnail_pic_s02(), viewHolder2.img2, options);
return view;
}else if(type==THREE){
ViewHolder3 viewHolder3 = null;
if (view==null){
view= View.inflate(context,R.layout.three_img,null);
viewHolder3 = new ViewHolder3();
viewHolder3.img1 = view.findViewById(R.id.img1);
viewHolder3.img2 = view.findViewById(R.id.img2);
viewHolder3.img3 = view.findViewById(R.id.img3);
viewHolder3.title1 = view.findViewById(R.id.tv_title);
view.setTag(viewHolder3);
}else{
viewHolder3= (ViewHolder3) view.getTag();
}
viewHolder3.title1.setText(results.get(i).getTitle());
ImageLoader.getInstance().displayImage(results.get(i).getThumbnail_pic_s(), viewHolder3.img1, options);
ImageLoader.getInstance().displayImage(results.get(i).getThumbnail_pic_s02(), viewHolder3.img2, options);
ImageLoader.getInstance().displayImage(results.get(i).getThumbnail_pic_s03(), viewHolder3.img2, options);
return view;
}else {
return null;
}
}
class ViewHolder1{
TextView title1;
ImageView img1;
}
class ViewHolder2{
TextView title1;
ImageView img1;
ImageView img2;
}
class ViewHolder3{
TextView title1;
ImageView img1;
ImageView img2;
ImageView img3;
}
}