typelayout+Xlistview

来源:互联网 发布:平安科技 大数据应用 编辑:程序博客网 时间:2024/06/16 16:47

//activitymain

<?xml version="1.0" encoding="utf-8"?><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"    tools:context="com.example.lianxia.MainActivity">    <LinearLayout        android:id="@+id/ll"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:background="@color/colorPrimary"        android:orientation="horizontal">        <Button            android:id="@+id/b1"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@color/colorPrimary"            android:onClick="b1"            android:text="首页"            android:textSize="18dp" />        <Button            android:id="@+id/b2"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@color/colorPrimary"            android:onClick="b2"            android:text="想法"            android:textSize="18dp" />        <Button            android:id="@+id/b3"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@color/colorPrimary"            android:onClick="b3"            android:text="市场"            android:textSize="18dp" />        <Button            android:id="@+id/b4"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:background="@color/colorPrimary"            android:onClick="b4"            android:text="通知"            android:textSize="18dp" />        <Button            android:id="@+id/b5"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:background="@color/colorPrimary"            android:layout_weight="1"            android:onClick="b5"            android:text="更多"            android:textSize="18dp" />    </LinearLayout>    <FrameLayout        android:id="@+id/fl"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_above="@+id/ll"></FrameLayout></RelativeLayout>
//frg1

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.lianxia.MainActivity">    <EditText        android:id="@+id/et"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:hint="" />    <android.support.design.widget.TabLayout        android:id="@+id/tl"        android:layout_width="wrap_content"        android:layout_height="50dp"        android:layout_below="@+id/et"        android:layout_centerHorizontal="true"        app:tabGravity="center"        app:tabIndicatorColor="@color/colorAccent"        app:tabMode="scrollable"        app:tabTextColor="@color/colorPrimary"></android.support.design.widget.TabLayout>    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_below="@+id/tl"></android.support.v4.view.ViewPager></RelativeLayout>
//frag2

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:gravity="center"        android:text="想法页面" /></LinearLayout>
//item1

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <TextView        android:id="@+id/desc"        android:layout_width="match_parent"        android:layout_height="50dp" /></LinearLayout>
//item2

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal"    >    <ImageView        android:id="@+id/img"        android:layout_width="50dp"        android:layout_height="50dp"        android:src="@mipmap/ic_launcher"        />    <TextView        android:id="@+id/desc"        android:layout_width="match_parent"        android:layout_height="50dp" /></LinearLayout>
//rm

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal"    >    <ImageView        android:id="@+id/img"        android:layout_width="50dp"        android:layout_height="50dp"        android:src="@mipmap/ic_launcher"        />    <TextView        android:id="@+id/desc"        android:layout_width="match_parent"        android:layout_height="50dp" /></LinearLayout>
//MainActivity

package com.example.lianxia;import android.graphics.Color;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.FrameLayout;import com.example.lianxia.frag.Fragment1;import com.example.lianxia.frag.Fragment2;import com.example.lianxia.frag.Fragment3;import com.example.lianxia.frag.Fragment4;import com.example.lianxia.frag.Fragment5;public class MainActivity extends AppCompatActivity {    private FrameLayout fl;    private Button b1,b2,b3,b4,b5;    private Fragment1 fragment1;    private Fragment2 fragment2;    private Fragment3 fragment3;    private Fragment4 fragment4;    private Fragment5 fragment5;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initFragment();    }    //控件初始化    private void initView() {        b1 = (Button) findViewById(R.id.b1);        b2 = (Button) findViewById(R.id.b2);        b3 = (Button) findViewById(R.id.b3);        b4 = (Button) findViewById(R.id.b4);        b5 = (Button) findViewById(R.id.b5);        b1.setTextColor(Color.RED);    }    private void initFragment() {        fragment1 = new Fragment1();        fragment2 = new Fragment2();        fragment3 = new Fragment3();        fragment4 = new Fragment4();        fragment5 = new Fragment5();        getSupportFragmentManager().beginTransaction().add(R.id.fl,fragment1).commit();        getSupportFragmentManager().beginTransaction().add(R.id.fl,fragment2).commit();        getSupportFragmentManager().beginTransaction().add(R.id.fl,fragment3).commit();        getSupportFragmentManager().beginTransaction().add(R.id.fl,fragment4).commit();        getSupportFragmentManager().beginTransaction().add(R.id.fl,fragment5).commit();        getSupportFragmentManager().beginTransaction().hide(fragment1).commit();        getSupportFragmentManager().beginTransaction().hide(fragment2).commit();        getSupportFragmentManager().beginTransaction().hide(fragment3).commit();        getSupportFragmentManager().beginTransaction().hide(fragment4).commit();        getSupportFragmentManager().beginTransaction().hide(fragment5).commit();        getSupportFragmentManager().beginTransaction().show(fragment1).commit();    }    public void b1(View view){        b1.setTextColor(Color.RED);        b2.setTextColor(Color.BLACK);        b3.setTextColor(Color.BLACK);        b4.setTextColor(Color.BLACK);        b5.setTextColor(Color.BLACK);        getSupportFragmentManager().beginTransaction().show(fragment1).commit();        getSupportFragmentManager().beginTransaction().hide(fragment2).commit();        getSupportFragmentManager().beginTransaction().hide(fragment3).commit();        getSupportFragmentManager().beginTransaction().hide(fragment4).commit();        getSupportFragmentManager().beginTransaction().hide(fragment5).commit();    }    public void b2(View view){        b1.setTextColor(Color.BLACK);        b2.setTextColor(Color.RED);        b3.setTextColor(Color.BLACK);        b4.setTextColor(Color.BLACK);        b5.setTextColor(Color.BLACK);        getSupportFragmentManager().beginTransaction().hide(fragment1).commit();        getSupportFragmentManager().beginTransaction().show(fragment2).commit();        getSupportFragmentManager().beginTransaction().hide(fragment3).commit();        getSupportFragmentManager().beginTransaction().hide(fragment4).commit();        getSupportFragmentManager().beginTransaction().hide(fragment5).commit();    }    public  void b3(View view){        b1.setTextColor(Color.BLACK);        b2.setTextColor(Color.BLACK);        b3.setTextColor(Color.RED);        b4.setTextColor(Color.BLACK);        b5.setTextColor(Color.BLACK);        getSupportFragmentManager().beginTransaction().hide(fragment1).commit();        getSupportFragmentManager().beginTransaction().hide(fragment2).commit();        getSupportFragmentManager().beginTransaction().show(fragment3).commit();        getSupportFragmentManager().beginTransaction().hide(fragment4).commit();        getSupportFragmentManager().beginTransaction().hide(fragment5).commit();    }    public  void b4(View view){        b1.setTextColor(Color.BLACK);        b2.setTextColor(Color.BLACK);        b3.setTextColor(Color.BLACK);        b4.setTextColor(Color.RED);        b5.setTextColor(Color.BLACK);        getSupportFragmentManager().beginTransaction().hide(fragment1).commit();        getSupportFragmentManager().beginTransaction().hide(fragment2).commit();        getSupportFragmentManager().beginTransaction().hide(fragment3).commit();        getSupportFragmentManager().beginTransaction().show(fragment4).commit();        getSupportFragmentManager().beginTransaction().hide(fragment5).commit();    }    public  void b5(View view){        b1.setTextColor(Color.BLACK);        b2.setTextColor(Color.BLACK);        b3.setTextColor(Color.BLACK);        b4.setTextColor(Color.BLACK);        b5.setTextColor(Color.RED);        getSupportFragmentManager().beginTransaction().hide(fragment1).commit();        getSupportFragmentManager().beginTransaction().hide(fragment2).commit();        getSupportFragmentManager().beginTransaction().hide(fragment3).commit();        getSupportFragmentManager().beginTransaction().hide(fragment4).commit();        getSupportFragmentManager().beginTransaction().show(fragment5).commit();    }}
//App

package com.example.lianxia;import android.app.Application;import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.io.File;public class MApp extends Application {    @Override    public void onCreate() {        super.onCreate();        File file = getExternalCacheDir();        ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).memoryCacheExtraOptions(200, 200)//配置内存缓存图片的尺寸                .memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小                .threadPoolSize(3)//配置加载图片的线程数                .threadPriority(1000)//配置线程的优先级                .diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径                .diskCacheFileCount(50)//配置sdcard缓存文件的数量                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字                .diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB  .memoryCacheExtraOptions(200, 200)//配置内存缓存图片的尺寸                .memoryCacheSize(2 * 1024 * 1024)//配置内存缓存的大小                .threadPoolSize(3)//配置加载图片的线程数                .threadPriority(1000)//配置线程的优先级                .diskCache(new UnlimitedDiskCache(file))//UnlimitedDiskCache 限制这个图片的缓存路径                .diskCacheFileCount(50)//配置sdcard缓存文件的数量                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//MD5这种方式生成缓存文件的名字                .diskCacheSize(50 * 1024 * 1024)//在sdcard缓存50MB                .build();        ImageLoader.getInstance().init(build);    }}
//dt

package com.example.lianxia.frag;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.example.lianxia.R;public class dt extends Fragment {    private View view;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.fragment5, container, false);        return view;    }}
//rm

package com.example.lianxia.frag;import android.os.AsyncTask;import android.os.Bundle;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.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.bawei.wzq.wzlibrary.view.XListView;import com.example.lianxia.JsonBean;import com.example.lianxia.R;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.List;public class rm extends Fragment implements XListView.IXListViewListener {    private View view;    private XListView xlv;    private DisplayImageOptions options;    private List<JsonBean.ResultsBean> list = new ArrayList<>();    private MAdapter mAdapter;    private int n = 1;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.rm, container, false);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //初始化        xlv = (XListView) view.findViewById(R.id.xlv);        xlv.setPullLoadEnable(true);        xlv.setXListViewListener(this);        //sd卡        options = new DisplayImageOptions.Builder()                .cacheOnDisk(true)   //sd卡                .cacheInMemory(true)                .build();        mAdapter = new MAdapter();        xlv.setAdapter(mAdapter);        new MAsyncTask().execute("http://gank.io/api/data/Android/10/1");    }    public void onLoad() {        xlv.stopRefresh();        xlv.stopLoadMore();        xlv.setRefreshTime("刚刚");    }    @Override    public void onRefresh() {        list.clear();        new MAsyncTask().execute("http://gank.io/api/data/Android/10/1");        onLoad();    }    @Override    public void onLoadMore() {        n++;        new MAsyncTask().execute("http://gank.io/api/data/Android/10/" + n);        onLoad();    }    //网络获取数据    class MAsyncTask extends AsyncTask<String, Void, String> {        private StringBuilder builder;        @Override        protected String doInBackground(String... strings) {            try {                //获取url                URL url = new URL(strings[0]);                //请求网络                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                int code = urlConnection.getResponseCode();                //判断是否返回成功                if (code == 200) {                    //获取网络信息                    InputStream inputStream = urlConnection.getInputStream();                    BufferedReader bf = new BufferedReader(new InputStreamReader(inputStream));                    builder = new StringBuilder();                    String s = "";                    //拼接                    while ((s = bf.readLine()) != null) {                        builder.append(s);                    }                }            } catch (Exception e) {                e.printStackTrace();            }            return builder.toString();        }        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            Log.e("Conan", s + "+-+-+-+-+-+-+-+-ss");            Gson gson = new Gson();            JsonBean jsonBean = gson.fromJson(s, JsonBean.class);            List<JsonBean.ResultsBean> results = jsonBean.getResults();            list.addAll(results);            mAdapter.notifyDataSetChanged();        }    }    //适配器    class MAdapter extends BaseAdapter {        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int i) {            return list.get(i);        }        @Override        public long getItemId(int i) {            return i;        }        class ViewHolder1 {            TextView desc;        }        class ViewHolder2 {            TextView desc;            ImageView img;        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            int type = getItemViewType(i);            switch (type) {                case 0:                    ViewHolder1 vh1;                    if (view == null) {                        view = View.inflate(getActivity(), R.layout.item1, null);                        vh1 = new ViewHolder1();                        vh1.desc = (TextView) view.findViewById(R.id.desc);                        view.setTag(vh1);                    } else {                        vh1 = (ViewHolder1) view.getTag();                    }                    vh1.desc.setText(list.get(i).getDesc());                    break;                case 1:                    ViewHolder2 vh2;                    if (view == null) {                        view = View.inflate(getActivity(), R.layout.item2, null);                        vh2 = new ViewHolder2();                        vh2.desc = (TextView) view.findViewById(R.id.desc);                        vh2.img = view.findViewById(R.id.img);                        view.setTag(vh2);                    } else {                        vh2 = (ViewHolder2) view.getTag();                    }                    vh2.desc.setText(list.get(i).getDesc());                    ImageLoader.getInstance().displayImage("http://avatar.csdn.net/D/B/C/1_wangmengyao1115.jpg", vh2.img, options);                    break;            }            return view;        }        @Override        public int getViewTypeCount() {            return 2;        }        @Override        public int getItemViewType(int position) {            if (list.get(position).getImages() == null) {                return 0;            } else {                return 1;            }        }    }}
//frag1

package com.example.lianxia.frag;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;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.lianxia.R;import java.util.ArrayList;import java.util.List;public class Fragment1 extends Fragment {    private View view;    private TabLayout tl;    private ViewPager vp;    private List<String> list = new ArrayList<>();    private List<Fragment> flist = new ArrayList<>();    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.fragment1, container, false);        return view;    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        //初始化        tl = (TabLayout) view.findViewById(R.id.tl);        vp = (ViewPager) view.findViewById(R.id.vp);        //集合添加数据        list.add("动态");        list.add("热门");        list.add("发现");        //fragment集合        flist.add(new dt());        flist.add(new rm());        flist.add(new fx());        //适配器        vp.setAdapter(new MAdapter(getActivity().getSupportFragmentManager()));        tl.setupWithViewPager(vp);    }    class MAdapter extends FragmentPagerAdapter {        public MAdapter(FragmentManager fm) {            super(fm);        }        @Override        public Fragment getItem(int position) {            return flist.get(position);        }        @Override        public int getCount() {            return flist.size();        }        @Override        public CharSequence getPageTitle(int position) {            return list.get(position);        }    }}
//frag2

package com.example.lianxia.frag;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.example.lianxia.R;public class Fragment2 extends Fragment {    private View view;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.fragment2, container, false);        return view;    }}