简单的接口用来显示数据

1.MainActivity

public class MainActivity extends BaseActivity  {
    int page=1;
    private DrawerLayout dr;
    private RadioGroup radioGroup;
    private Frag01 frag01;
    private Frag02 frag02;
    private Frag03 frag03;
    private FragmentManager manager;
    private FragmentTransaction transaction;
    private XlistView xlv;

    @Override
    protected int layoutResID() {
        return R.layout.activity_main;
    }

    @Override
    protected void initView() {
        dr = findViewById(R.id.dr);
        radioGroup = findViewById(R.id.radioGroup);
        dr = findViewById(R.id.dr);
        xlv = findViewById(R.id.xlv);
    }




    @Override
    protected void initData() {
        manager = getSupportFragmentManager();
        transaction = manager.beginTransaction();
        frag01 = new Frag01();
        frag02 = new Frag02();
        frag03 = new Frag03();
        transaction.add(R.id.frame,frag01);
        transaction.add(R.id.frame,frag02);
        transaction.add(R.id.frame,frag03);
        transaction.show(frag01).hide(frag02).hide(frag03);
        transaction.commit();
         radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                FragmentTransaction qq = manager.beginTransaction();
                switch (checkedId){
                    case R.id.radio0:
                        qq.show(frag01).hide(frag02).hide(frag03);
                        break;
                    case R.id.radio1:
                        qq.show(frag02).hide(frag01).hide(frag03);

                        break;
                    case R.id.radio2:
                        qq.show(frag03).hide(frag02).hide(frag01);

                        break;
                }
                qq.commit();
            }
        });
        /*监听
        dr.setDrawerListener(new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(@NonNull View view, float v) {

            }

            @Override
            public void onDrawerOpened(@NonNull View view) {

            }

            @Override
            public void onDrawerClosed(@NonNull View view) {

            }

            @Override
            public void onDrawerStateChanged(int i) {

            }
        });
        */
        getAsyncTask();
    }

    private void getAsyncTask() {
        MyAsyncTask task = new MyAsyncTask();
        task.execute();
    }


    private class MyAsyncTask extends AsyncTask<String,Integer,String> {
        String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+page;
        @Override
        protected String doInBackground(String... strings) {
            try {
                URL url = new URL(path);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setReadTimeout(5000);
                if(conn.getResponseCode()==200){
                    InputStream inputStream = conn.getInputStream();
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    byte[] bytes = new byte[1024];
                    int len =0;
                    while ((len=inputStream.read(bytes))!=-1){
                        bos.write(bytes,0,len);
                    }
                    inputStream.close();
                    bos.close();
                    String json = bos.toString();
                    return json;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            JSON fromJson = gson.fromJson(s, JSON.class);
            ArrayList<Datas> data = fromJson.getData();

            //适配器
            xlv.setAdapter(new PullAdapter(MainActivity.this,data));

        }
    }
}

2.基类

public abstract class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(layoutResID());
        initView();
        initData();
    }

    protected abstract void initData();

    protected abstract void initView();

    protected abstract int layoutResID();
}

public abstract class BaseFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = View.inflate(getActivity(),layoutResID(),null);
        initView(view);
        initData();
        return view;
    }

    protected abstract void initView(View view);

    protected abstract void initData();

    protected abstract int layoutResID();
}

3.NetConnection

public class NetWork {
    public static boolean isNetWork(Context context){
        ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo info = manager.getActiveNetworkInfo();
        if(info!=null){
           return info.isAvailable();
        }
        return false;
    }
}

4.自己写Bean类
5.Frag01

public class Frag01 extends BaseFragment {

    private TabLayout tab;
    private ViewPager pager;
    private ArrayList<String> list = new ArrayList<>();
    private Button btn;

    @Override
    protected int layoutResID() {
        return R.layout.frag01;
    }
    @Override
    protected void initView(View view) {
        tab = view.findViewById(R.id.tab);
        pager = view.findViewById(R.id.pager);
        btn = view.findViewById(R.id.btn);
    }
    @Override
    protected void initData() {
        list.add("王八蛋");
        list.add("关注");
        list.add("推荐");
        list.add("推荐地");
        list.add("皇帝");
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });
        pager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) {
            @Override
            public int getCount() {
                return list.size();
            }

            @Override
            public Fragment getItem(int i) {
                Fragments fragments = new Fragments();

                return fragments;
            }

            @Nullable
            @Override
            public CharSequence getPageTitle(int position) {
                return list.get(position);
            }
        });
        //关联适配器
        tab.setupWithViewPager(pager);

    }


}

Fragments

public class Fragments extends BaseFragment {
    private int page=1;
    private PullToRefreshListView pull;
    private Handler handler = new Handler();
    private ArrayList<Datas> list;

    @Override
    protected int layoutResID() {
        return R.layout.fragment;
    }
    @Override
    protected void initView(View view) {
        pull = view.findViewById(R.id.pull);
        //设置模式
        pull.setMode(PullToRefreshBase.Mode.BOTH);
      //  pull.setPullToRefreshEnabled(true);
    }

    @Override
    protected void initData() {
        final boolean netWork = NetWork.isNetWork(getActivity());
        //设置监听
        pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                if(netWork){
                    page=1;
                    getDatas();
                }
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        pull.onRefreshComplete();
                    }
                },2000);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                    if(netWork){
                        page++;
                        getDatas();
                    }
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            pull.onRefreshComplete();
                        }
                    },2000);
            }
        });
        //请求数据
        if(netWork){
            Toast.makeText(getActivity(),"有网",Toast.LENGTH_SHORT).show();
            getDatas();
        }else {
            Toast.makeText(getActivity(),"无网",Toast.LENGTH_SHORT).show();
            //查询数据库
            SqlDao dao = new SqlDao(getActivity());
            Cursor cursor = dao.query("lianxi", null, null, null, null, null, null);
            //创建新集合
            ArrayList<Datas> newData = new ArrayList<>();
            //查询字段添加到数据库
            if(cursor.moveToFirst()){
                do {
                    String news_title = cursor.getString(cursor.getColumnIndex("news_title"));
                    String pic_url = cursor.getString(cursor.getColumnIndex("pic_url"));
                    newData.add(new Datas(news_title,pic_url));
                }while (cursor.moveToNext());
            }
            Log.d("xxx",newData.toString());
            cursor.close();
            //适配器
            pull.setAdapter(new PullAdapter(getActivity(),newData));
        }
    }

    private void getDatas() {
        MyAsyncTask task = new MyAsyncTask();
        task.execute();
    }

    private class MyAsyncTask extends AsyncTask<String,Integer,String> {
        String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/"+page;
        @Override
        protected String doInBackground(String... strings) {
            try {
                URL url = new URL(path);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setReadTimeout(5000);
                if(conn.getResponseCode()==200){
                    InputStream inputStream = conn.getInputStream();
                    ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    byte[] bytes = new byte[1024];
                    int len =0;
                    while ((len=inputStream.read(bytes))!=-1){
                        bos.write(bytes,0,len);
                    }
                    inputStream.close();
                    bos.close();
                    String json = bos.toString();
                    return json;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            JSON fromJson = gson.fromJson(s, JSON.class);
            ArrayList<Datas> data = fromJson.getData();
            SqlDao sqlDao = new SqlDao(getActivity());
            if(page==1){
                list = new ArrayList<>();
                sqlDao.delete("lianxi",null,null);
                for (int i=0;i<data.size();i++){
                    ContentValues values = new ContentValues();
                    values.put("news_title",data.get(i).getNews_title());
                    values.put("pic_url",data.get(i).getPic_url());
                    sqlDao.insert("lianxi",null,values);
                }
            }
            list.addAll(data);
            //适配器
            pull.setAdapter(new PullAdapter(getActivity(),list));
            //显示新数据
            pull.setSelection(list.size()-19);



        }
    }
}

6.适配器

public class PullAdapter extends BaseAdapter {
    private Context context;
    private ArrayList<Datas> list;
    private final static int TYPE0=0;
    private final static int TYPE1=1;
    DisplayImageOptions options = new DisplayImageOptions.Builder()
            .displayer(new RoundedBitmapDisplayer(20))
            .showImageOnFail(R.mipmap.ic_launcher)
            .cacheOnDisk(true)
            .cacheInMemory(true)
            .build();
    public PullAdapter(Context context, ArrayList<Datas> list) {
        this.context = context;
        this.list = list;
    }

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

    @Override
    public Object getItem(int position) {
        return null;
    }

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

    @Override
    public int getViewTypeCount() {

        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        if(position%2==0){
            return TYPE0;
        }else {
            return TYPE1;
        }
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHodler1 viewHodler1=null;
        ViewHodler2 viewHodler2=null;

        int type = getItemViewType(position);
        if(convertView==null){
            if(type==TYPE0){
                convertView=View.inflate(context, R.layout.item1,null);
                viewHodler1=new ViewHodler1();
                TextView text = convertView.findViewById(R.id.i_tv1);
                viewHodler1.text1=text;
                convertView.setTag(viewHodler1);
            }else{
                convertView=View.inflate(context, R.layout.item2,null);
                TextView text = convertView.findViewById(R.id.i_tv2);
                ImageView img = convertView.findViewById(R.id.i_iv22);
                viewHodler2=new ViewHodler2();
                viewHodler2.text=text;
                viewHodler2.img=img;
                convertView.setTag(viewHodler2);
            }
        }else{
            if(type==TYPE0){
                viewHodler1= (ViewHodler1) convertView.getTag();
            }else{
                viewHodler2= (ViewHodler2) convertView.getTag();

            }

        }


        if(type==TYPE0){
           viewHodler1.text1.setText(list.get(position).getNews_title());
        }else{
            viewHodler2.text.setText(list.get(position).getNews_title());
            ImageLoader.getInstance().displayImage(list.get(position).getPic_url(),viewHodler2.img,options);
        }


  /*    if(type==TYPE1){
            viewHodler1.text1.setText(list.get(position).getNews_title());
        }else{
            viewHodler2.text.setText(list.get(position).getNews_title());
            ImageLoader.getInstance().displayImage(list.get(position).getPic_url(),viewHodler2.img,options);
        }
*/

        return convertView;
    }

    class ViewHodler1{
        private TextView text1;
    }
    class ViewHodler2{
        private TextView text;
        private ImageView img;
    }
}

7.Application

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        File file = StorageUtils.getCacheDirectory(this);
        ImageLoaderConfiguration imageLoaderConfiguration = new ImageLoaderConfiguration.Builder(this)
                .diskCache(new UnlimitedDiskCache(file))
                .memoryCache(new LruMemoryCache(2*1024*1024))
                .build();
        ImageLoader.getInstance().init(imageLoaderConfiguration);
    }
}

8.SQL

public class Sqlite extends SQLiteOpenHelper {
    public Sqlite(Context context) {
        super(context, "bw.db", null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
            db.execSQL("create table lianxi(id Integer primary key autoincrement,news_title Text,pic_url Text)");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

public class SqlDao {

    private final SQLiteDatabase db;

    public SqlDao(Context context){
        Sqlite sqlite = new Sqlite(context);
        db = sqlite.getWritableDatabase();
    }
    //添加
    public long insert(String table, String nullColumnHack, ContentValues values) {
        return db.insert(table,nullColumnHack,values);
    }
    //查询
    public Cursor query(String table, String[] columns,
                        String selection, String[] selectionArgs, String groupBy,
                        String having, String orderBy){
      return db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy);
    }
    //删除
    public long delete(String table, String whereClause, String[] whereArgs){
        return db.delete(table, whereClause, whereArgs);
    }
}

9.布局
activity_main

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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=".MainActivity">

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/dr"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <FrameLayout
                android:id="@+id/frame"
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="0dp"></FrameLayout>

            <RadioGroup
                android:id="@+id/radioGroup"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="horizontal">

                <RadioButton
                    android:id="@+id/radio0"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:button="@null"
                    android:background="@drawable/btn_selector"
                    android:text="首页" />

                <RadioButton
                    android:id="@+id/radio1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:button="@null"
                    android:background="@drawable/btn_selector"

                    android:text="首页2" />

                <RadioButton
                    android:id="@+id/radio2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@drawable/btn_selector"

                    android:layout_weight="1"
                    android:button="@null"
                    android:text="首页3" />
            </RadioGroup>
        </LinearLayout>


        <FrameLayout
            android:background="#f00"
            android:layout_width="300dp"
            android:layout_height="match_parent"
            android:layout_gravity="start">
        <com.na.xlistview.XlistView
            android:id="@+id/xlv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"></com.na.xlistview.XlistView>
        </FrameLayout>
    </android.support.v4.widget.DrawerLayout>

</android.support.constraint.ConstraintLayout>```

Frag01

<?xml version="1.0" encoding="utf-8"?>



<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_weight=“1”
android:layout_width=“match_parent”
android:layout_height=“50dp”>
</android.support.design.widget.TabLayout>

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

fragment

<?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">
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/pull"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView>

</LinearLayout>

item

<?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:id="@+id/i_tv1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="aa"
        android:textSize="25sp"
        />

</LinearLayout>

item2

<?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:id="@+id/i_tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="aa"
        android:textSize="25sp"
        />
        <ImageView
            android:id="@+id/i_iv22"
            android:layout_width="100dp"
            android:layout_height="120dp"
            android:src="@mipmap/ic_launcher" />



</LinearLayout>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值