横向滑动和PullToRefreshListView
来源:互联网 发布:中午跑步 知乎 编辑:程序博客网 时间:2024/06/06 04:27
//主界面
package com.example.myapplication;import android.graphics.Color;import android.os.Bundle;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.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private HorizontalScrollView hrztsv; private ViewPager vp; private LinearLayout ll; String[] tou; List<TextView> arr; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到控件 hrztsv = (HorizontalScrollView) findViewById(R.id.horizontalscrollview); vp = (ViewPager) findViewById(R.id.viewpager); ll = (LinearLayout) findViewById(R.id.linearlayout); tou = new String[]{"福利","Android","iOS","休息视频","拓展资源","前端","all"}; arr = new ArrayList<TextView>(); for (int i = 0; i <tou.length ; i++) { TextView tv = new TextView(MainActivity.this); tv.setText(tou[i]); tv.setId(i+1000); tv.setOnClickListener(MainActivity.this); if(i==0){ tv.setTextColor(Color.RED); }else{ tv.setTextColor(Color.BLACK); } LinearLayout.LayoutParams lila = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); lila.setMargins(20,10,20,10); ll.addView(tv,lila); arr.add(tv); } //适配器 MyAdpt ma = new MyAdpt(getSupportFragmentManager()); vp.setAdapter(ma); vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { for(int n=0;n<arr.size();n++){ if(n==position){ arr.get(n).setTextColor(Color.RED); }else{ arr.get(n).setTextColor(Color.BLACK); } } TextView textView = arr.get(position); int ii = textView.getWidth() / arr.size() * position; hrztsv.smoothScrollBy(ii,0); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); } @Override public void onClick(View view) { } //适配器 class MyAdpt extends FragmentPagerAdapter{ public MyAdpt(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return new MyFragment().getDizhi(arr.get(position).getText().toString()); } @Override public int getCount() { return arr.size(); } }}
//Fragment
package com.example.myapplication;import android.os.AsyncTask;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 android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.LinkedList;import java.util.List;/** * author:Created by WangZhiQiang on 2017/9/19. */public class MyFragment extends Fragment{ int index = 1; List<Bean.ResultsBean> resu; private PullToRefreshListView ptlv; String mingzi = "Android"; LinkedList<Bean.ResultsBean> arr; MyAdp mm; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v = View.inflate(getActivity(),R.layout.item_pull,null); ptlv = v.findViewById(R.id.pull_refresh_list); return v; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Bundle arguments = getArguments(); mingzi = arguments.getString("lujing"); ptlv.setMode(PullToRefreshBase.Mode.BOTH); arr = new LinkedList<Bean.ResultsBean>(); mm = new MyAdp(); ptlv.setAdapter(mm); //查找地址 try { new MyAstask().execute("http://gank.io/api/data/"+ URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index); ptlv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { try { arr.clear(); index=1; new MyAstask().execute("http://gank.io/api/data/"+URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index); } catch (Exception e) { e.printStackTrace(); } } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { try { index++; new MyAstask().execute("http://gank.io/api/data/"+URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } }); } catch (Exception e) { e.printStackTrace(); } } //创建一个方法 public static Fragment getDizhi(String jiepath){ MyFragment myFragment = new MyFragment(); Bundle bundle = new Bundle(); bundle.putString("lujing",jiepath); myFragment.setArguments(bundle); return myFragment; } //异步加载 class MyAstask extends AsyncTask<String,Void,String>{ @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(String string) { super.onPostExecute(string); //gosn解析 Gson gson = new Gson(); Bean be = gson.fromJson(string, Bean.class); resu = be.getResults(); arr.addAll(resu); mm.notifyDataSetChanged(); ptlv.onRefreshComplete(); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } //自动解析 @Override protected String doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpURLConnection hu = (HttpURLConnection) url.openConnection(); if (hu.getResponseCode()==200){ InputStream inputStream = hu.getInputStream(); BufferedReader b = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder sb = new StringBuilder(); String st = ""; while((st=b.readLine())!=null){ sb.append(st); } String to = sb.toString(); return to; } } catch (Exception e) { e.printStackTrace(); } return null; } } //适配器 class MyAdp extends BaseAdapter{ @Override public int getItemViewType(int position) { Bean.ResultsBean resultsBea = arr.get(position); if(resultsBea.getImages()==null){ return 1; } return 2; } @Override public int getViewTypeCount() { return 10; } @Override public int getCount() { return arr.size(); } @Override public Object getItem(int i) { return arr.get(i); } @Override public long getItemId(int i) { return i; } //得到视图 @Override public View getView(int i, View view, ViewGroup viewGroup) { int itemViewType = getItemViewType(i); Bean.ResultsBean result = arr.get(i); switch (itemViewType){ case 1: Adpt2 ad2; if(view==null){ view = View.inflate(getActivity(),R.layout.listview_shitu2,null); ad2 = new Adpt2(); ad2.tv2 = view.findViewById(R.id.tv2); view.setTag(ad2); }else{ ad2 = (Adpt2) view.getTag(); } ad2.tv2.setText(result.getCreatedAt()); break; case 2: Adpt ad; if(view==null){ view = View.inflate(getActivity(),R.layout.listview_item,null); ad = new Adpt(); ad.img = view.findViewById(R.id.imag); ad.tv = view.findViewById(R.id.tex); view.setTag(ad); }else{ ad = (Adpt) view.getTag(); } ImageLoader.getInstance().displayImage(result.getImages().get(0),ad.img); ad.tv.setText(result.getCreatedAt()); break; } return view; } class Adpt{ ImageView img; TextView tv; } class Adpt2{ TextView tv2; } }}//app
package com.example.myapplication;import android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * author:Created by WangZhiQiang on 2017/9/19. */public class app extends Application{ @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration il = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(il); }}//布局 主布局<?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.myapplication.MainActivity"> <HorizontalScrollView android:id="@+id/horizontalscrollview" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/linearlayout" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"></LinearLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/horizontalscrollview" android:layout_alignParentLeft="true" android:layout_alignParentStart="true"></android.support.v4.view.ViewPager></RelativeLayout>//PullToRefreshListView布局
//控件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/pull_refresh_list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:cacheColorHint="#00000000" android:divider="#19000000" android:dividerHeight="4dp" android:fadingEdge="none" android:fastScrollEnabled="false" android:footerDividersEnabled="false" android:headerDividersEnabled="false" android:smoothScrollbar="true" /></RelativeLayout>
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/imag" android:layout_width="match_parent" android:layout_height="300dp" /> <TextView android:id="@+id/tex" android:layout_below="@id/imag" android:layout_width="wrap_content" android:layout_height="wrap_content" /></RelativeLayout>//字体大小<?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/tv2" android:textSize="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
阅读全文
0 0
- 横向滑动和PullToRefreshListView
- Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用 +pullToRefreshListView
- 横向滑动ViewPager和Fragment
- ViewPage左右滑动和PullToRefreshListView上下滑动事件冲突
- TabLayout横向滑动,DrawerLayout侧滑,PullToRefreshListView上拉刷新下拉加载联用
- 横向滑动+++++
- 横向滑动
- 横向滑动
- fragment+viewpager和横向滑动框架
- HorizontalScrollView 和GridView 实现横向滑动
- RecyclerView横向和竖向滑动冲突
- RecyclerView横向和竖向滑动冲突
- 横向滑动和纵向滑动互不受影响的ScrollView
- PullToRefreshListView滑动布局隐藏问题
- jQuery 树形菜单(竖向点击和横向滑动)
- PullToReFresh 实现 RecycleView 横向滑动的刷新和加载更多
- 通过CardView和RecyclerView实现横向卡片式滑动效果
- 通过CardView和RecyclerView实现横向卡片式滑动效果
- 独立事件与非独立事件,条件概率
- oracle中system用户忘记了密码和被锁住
- 双栈(Dual Stack)
- Html5 如何做到提交图片时及时预览
- 由浅入深之Tensorflow(3)----数据读取之TFRecords
- 横向滑动和PullToRefreshListView
- 交易开拓者tb组合26万保证金7年盈利250万-tb_yun_trend2
- Struts2过滤器配置
- mysql 基本指令
- 建一座安全的“天空城” ——揭秘腾讯WeTest如何与祖龙共同挖掘手游安全漏洞
- 栈 Okabe and Boxes:CodeForces
- dragonboard从刷卡到启动(WIFI:AP6181失败了。以太网怎么测试?)
- hdu 1182 食物链(并查集)
- 【高斯消元】BZOJ1013 [JSOI2008]球形空间产生器sphere