上拉下拉加载数据的应用.....

xml布局

<!--主内容区域在下面-->

<RelativeLayout
    android:id="@+id/frame_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
    <RadioGroup
        android:id="@+id/group"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true">
        <RadioButton
            android:id="@+id/radio_01"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="15dp"
            android:layout_height="wrap_content"
            android:button="@null"
            android:gravity="center"
            android:checked="true"
            android:textColor="@color/select_che"
            android:text="首页"/>
        <RadioButton
            android:id="@+id/radio_02"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="15dp"
            android:layout_height="wrap_content"
            android:button="@null"
            android:gravity="center"
            android:textColor="@color/select_che"
            android:text="自选"/>
        <RadioButton
            android:id="@+id/radio_03"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="15dp"
            android:layout_height="wrap_content"
            android:button="@null"
            android:gravity="center"
            android:textColor="@color/select_che"
            android:text="资讯"/>
        <RadioButton
            android:id="@+id/radio_04"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:padding="15dp"
            android:layout_height="wrap_content"
            android:button="@null"
            android:gravity="center"
            android:textColor="@color/select_che"
            android:text="交易"/>
    </RadioGroup>
</RelativeLayout>

<!--抽屉显示的内容-->
<LinearLayout

    android:background="#ffffff"
    android:layout_gravity="left"
    android:id="@+id/linear_drawer"
    android:orientation="vertical"
    android:layout_width="200dp"
    android:layout_height="match_parent">

    <ImageView
        android:layout_gravity="center_horizontal"
        android:src="@mipmap/ic_launcher"
        android:layout_width="50dp"
        android:layout_height="50dp" />
    <TextView
        android:text="V8.36"
        android:layout_gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <LinearLayout
        android:padding="20dp"
        android:id="@+id/linear_01"
        android:orientation="horizontal"
        android:layout_width="200dp"
        android:layout_marginTop="50dp"
        android:layout_height="wrap_content">
        <ImageView
            android:src="@mipmap/ic_launcher"
            android:layout_width="20dp"
            android:layout_height="20dp" />

        <TextView
            android:text="客服热线"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:padding="20dp"
        android:id="@+id/linear_02"
        android:orientation="horizontal"
        android:layout_width="200dp"
        android:layout_height="wrap_content">
        <ImageView
            android:src="@mipmap/ic_launcher"
            android:layout_width="20dp"
            android:layout_height="20dp" />

        <TextView
            android:text="营业部网网点"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <LinearLayout
        android:padding="20dp"
        android:id="@+id/linear_03"
        android:orientation="horizontal"
        android:layout_width="200dp"
        android:layout_height="wrap_content">
        <ImageView
            android:src="@mipmap/ic_launcher"
            android:layout_width="20dp"
            android:layout_height="20dp" />

        <TextView
            android:text="系统设置"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
    <LinearLayout
        android:padding="20dp"
        android:id="@+id/linear_04"
        android:orientation="horizontal"
        android:layout_width="200dp"
        android:layout_height="wrap_content">
        <ImageView
            android:src="@mipmap/ic_launcher"
            android:layout_width="20dp"
            android:layout_height="20dp" />

        <TextView
            android:text="换肤"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>
main主题

public class MainActivity extends FragmentActivity implements View.OnClickListener {

private DrawerLayout drawerLayout;
private RelativeLayout relativeLayout;
private LinearLayout linearLayout;
private ViewPager pager;
private RadioGroup group;
private LinearLayout linear_01;
private LinearLayout linear_02;
private LinearLayout linear_03;
private LinearLayout linear_04;
private List<Fragment> list;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //初始化数据
    drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
    relativeLayout = (RelativeLayout)findViewById(R.id.frame_layout);
    linearLayout = (LinearLayout)findViewById(R.id.linear_drawer);
    pager = (ViewPager)findViewById(R.id.pager);
    group = (RadioGroup)findViewById(R.id.group);


    linear_01 = (LinearLayout) findViewById(R.id.linear_01);
    linear_02 = (LinearLayout) findViewById(R.id.linear_02);
    linear_03 = (LinearLayout) findViewById(R.id.linear_03);
    linear_04 = (LinearLayout) findViewById(R.id.linear_04);
    //点击事件
    linear_01.setOnClickListener(this);
    linear_02.setOnClickListener(this);
    linear_03.setOnClickListener(this);
    linear_04.setOnClickListener(this);

    list = new ArrayList<>();
    list.add(new Fragment_01());
    list.add(new Fragment_02());
    list.add(new Fragment_03());
    list.add(new Fragment_04());
    MaAdapter maAdapter = new MaAdapter(getSupportFragmentManager(), list);
    //页面滑动
    pager.setAdapter(maAdapter);
    pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            group.check(group.getChildAt(position).getId());
        }

        @Override
        public void onPageSelected(int position) {

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });
    //页面滑动
    group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            switch (i){
                case R.id.radio_01:
                    pager.setCurrentItem(0,false);
                    break;
                case R.id.radio_02:
                    pager.setCurrentItem(1,false);
                    break;
                case R.id.radio_03:
                    pager.setCurrentItem(2,false);
                    break;
                case R.id.radio_04:
                    pager.setCurrentItem(3,false);
                    break;
            }
        }
    });
    pager.setOffscreenPageLimit(4);
}

@Override
public void onClick(View view) {
   switch (view.getId()){
       case R.id.linear_01:
           drawerLayout.closeDrawers();
           break;
   }
    switch (view.getId()){
        case R.id.linear_02:
            drawerLayout.closeDrawers();
            break;
    }
    switch (view.getId()){
        case R.id.linear_03:
            drawerLayout.closeDrawers();
            break;
    }
    switch (view.getId()){
        case R.id.linear_04:
            drawerLayout.closeDrawers();
            break;
    }
}

}
fragment………….
public class Fragment_03 extends Fragment{

private TabLayout tabLayout;
private ViewPager pager;
private List<String> list;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_03, container, false);
    tabLayout = (TabLayout)view.findViewById(R.id.tab_layout);
    pager = (ViewPager)view.findViewById(R.id.view_pager);
    return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    list = new ArrayList<>();
    list.add("福利");
    list.add("Android");
    list.add("Ios");
    list.add("休息视频");
    list.add("拓展视频");
    list.add("前端");
    list.add("all");

    pager.setOffscreenPageLimit(list.size());
    //设置适配器
    pager.setAdapter(new FragmentPagerAdapter(getFragmentManager()) {
        @Override
        public CharSequence getPageTitle(int position) {
            //展示的标题
            return list.get(position);
        }
        @Override
        public Fragment getItem(int position) {
            //fragment集合viewPager使用的时候,fragment是new出来的
            NewsFragment newsFragment = new NewsFragment();
            Bundle bundle = new Bundle();
            //b把当前位置的标题传递过去
            bundle.putString("name",list.get(position));
            newsFragment.setArguments(bundle);
            return newsFragment;
        }

        @Override
        public int getCount() {
            return list.size();
        }
    });
    //绑定在一起
    tabLayout.setupWithViewPager(pager);
}

}
NewsFragment……………
public class NewsFragment extends Fragment {

private PullToRefreshListView refreshListView;
private String param;

private int page_num = 1;
private List<DataDataBean.ResultsBean>list = new ArrayList<>();
private MyAdapter myAdapter;
private View view;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {//
   //创建视图 找控件
    view = inflater.inflate(R.layout.frag_layout, container, false);
    refreshListView = (PullToRefreshListView) view.findViewById(R.id.refresh_list_view);
    return view;
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    Bundle bundle = getArguments();
    param = bundle.getString("name", "Android");
    //请求数据设置监听
    getData();
    refreshListView.setMode(PullToRefreshBase.Mode.BOTH);
   //上拉刷新 下拉加载
    ILoadingLayout startLabels = refreshListView.getLoadingLayoutProxy(true, false);
    startLabels.setPullLabel("下拉刷新");
    startLabels.setRefreshingLabel("正在刷新...");
    startLabels.setReleaseLabel("放开刷新");
    ILoadingLayout endLabels = refreshListView.getLoadingLayoutProxy( false, true);
    endLabels.setPullLabel("上拉刷新");
    endLabels.setRefreshingLabel("正在载入...");
    endLabels.setReleaseLabel("放开刷新...");
    //设置监听事件
    refreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
        @Override
        public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
            getRefreshData();
        }

        @Override
        public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
            //上拉加载的时候 page_num+1
            page_num ++;
            getData();
        }
    });
}


private void getRefreshData() {
    AsyncTask<Void,Void,String>asyncTask = new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... voids) {
            try {
                String path="http://gank.io/api/data/"+ URLEncoder.encode(param,"utf-8")+"/10/1";
                URL url = new URL(path);
                HttpURLConnection connection = (HttpURLConnection)url.openConnection();
                connection.setRequestMethod("GET");
                connection.setReadTimeout(5000);
                connection.setConnectTimeout(5000);
                int responseCode = connection.getResponseCode();
                if (responseCode == 200){
                    InputStream inputStream = connection.getInputStream();

                    String json = streamToString(inputStream,"utf-8");
                    Log.i("-----",json);
                    return json;

                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "";
        }

        @Override
        protected void onPostExecute(String json) {
            Gson gson = new Gson();
            DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);
            if (dataDataBean != null && dataDataBean.getResults()!=null){
               list.addAll(dataDataBean.getResults());
                setAdapter();
                refreshListView.onRefreshComplete();
            }
        }
    };
    asyncTask.execute();
}


private void getData() {
    AsyncTask<Void,Void,String>asyncTask = new AsyncTask<Void, Void, String>() {
        @Override
        protected String doInBackground(Void... voids) {
            try {
                String path="http://gank.io/api/data/"+ URLEncoder.encode(param,"utf-8")+"/10/"+page_num;
                URL url = new URL(path);
                HttpURLConnection connection = (HttpURLConnection)url.openConnection();
                connection.setRequestMethod("GET");
                connection.setReadTimeout(5000);
                connection.setConnectTimeout(5000);
                int responseCode = connection.getResponseCode();
                if (responseCode == 200){
                    InputStream inputStream = connection.getInputStream();

                    String json = streamToString(inputStream,"utf-8");
                    Log.i("+++++++",json);
                    return json;

                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "";
        }

        @Override
        protected void onPostExecute(String json) {
            Gson gson = new Gson();
            DataDataBean dataDataBean = gson.fromJson(json, DataDataBean.class);
            if (dataDataBean != null && dataDataBean.getResults()!=null){
               //添加数据
                list.addAll(dataDataBean.getResults());
                setAdapter();
                //停止刷新
                refreshListView.onRefreshComplete();
            }
        }
    };
    asyncTask.execute();
}
//设置适配器
private void setAdapter() {
    if (myAdapter == null){
        myAdapter = new MyAdapter(getActivity(), list);
        refreshListView.setAdapter(myAdapter);
    }else{
        myAdapter.notifyDataSetChanged();
    }

}

//字节转字符串
private String streamToString(InputStream inputStream,String charset) {
try {
InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);

        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
        String s = null;
        StringBuilder builder = new StringBuilder();
        while ((s = bufferedReader.readLine()) != null){
            builder.append(s);
        }
        Log.i("++++",bufferedReader.toString());
        bufferedReader.close();
        return builder.toString();

    } catch (Exception e) {
        e.printStackTrace();
    }

    return  null;
}

}
Adapter……………………………
public class MaAdapter extends FragmentPagerAdapter{
Listlist;

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

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

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

}
………………………….

public class MyAdapter extends BaseAdapter{
Context context;
List<DataDataBean.ResultsBean>list;

public MyAdapter(Context context, List<DataDataBean.ResultsBean> list) {
    this.context = context;
    this.list = list;
    ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));
}

@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;
}

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    ViewHolder holder;
    if (view == null){
        view = View.inflate(context, R.layout.item_layout,null);
        holder = new ViewHolder();
        holder.image = (ImageView)view.findViewById(R.id.image);
        holder.title = (TextView)view.findViewById(R.id.title);
        view.setTag(holder);
    }else{
        holder = (ViewHolder)view.getTag();
    }
    holder.title.setText(list.get(i).getDesc());
    if (list.get(i).getImages()!=null){
        ImageLoader.getInstance().displayImage(list.get(i).getImages().get(0)+"?imageView2/0/w/100",holder.image, ImageLoaderUtil.getDefaultOption());

    }
    return view;
}
class ViewHolder{
    ImageView image;
    TextView title;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值