侧滑+横向滚动条+PullToRefreshListView+拼接字符串接口
来源:互联网 发布:华帝油烟机怎么样知乎 编辑:程序博客网 时间:2024/06/09 18:08
布局
1.
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout android:id="@+id/ddd" 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.my_yuekao_dome.MainActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <HorizontalScrollView android:id="@+id/hlv" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" ></LinearLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/hlv" /> </RelativeLayout> <ListView android:id="@+id/lv" android:background="@color/colorPrimary" android:layout_width="300dp" android:layout_gravity="left" android:choiceMode="singleChoice" android:layout_height="match_parent" /></android.support.v4.widget.DrawerLayout>
2.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_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>
MainActivity页面
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private ViewPager pager; private HorizontalScrollView hlv; private LinearLayout ll; private List<TextView> arr; private DrawerLayout ddd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hlv = (HorizontalScrollView) findViewById(R.id.hlv); pager= (ViewPager) findViewById(R.id.pager); ll = (LinearLayout) findViewById(R.id.ll); ddd = (DrawerLayout) findViewById(R.id.ddd); String[] 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 params=new LinearLayout.LayoutParams(ViewPager.LayoutParams.WRAP_CONTENT,ViewPager.LayoutParams.WRAP_CONTENT); params.setMargins(10,0,10,0); ll.addView(tv,params); arr.add(tv); } MyAdapter adapter=new MyAdapter(getSupportFragmentManager()); pager.setAdapter(adapter); pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { for(int i=0;i<arr.size();i++){ if(i==position){ arr.get(i).setTextColor(Color.RED); }else { arr.get(i).setTextColor(Color.BLACK); } } TextView textView = arr.get(position); int i = textView.getWidth() / arr.size() * position; hlv.smoothScrollBy(i,0); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); } @Override public void onClick(View v) { int id = v.getId(); pager.setCurrentItem(id-1000); } class MyAdapter extends FragmentPagerAdapter{ public MyAdapter(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页面
public class MyFragment extends Fragment{ private PullToRefreshListView ptlv; int index=1; String mingzi="福利"; private List<Bean.ResultsBean> results; private List<Bean.ResultsBean> arr; private MAdapter adapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View v=View.inflate(getActivity(),R.layout.pull,null); ptlv = (PullToRefreshListView) v.findViewById(R.id.pull_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 ArrayList<Bean.ResultsBean>(); adapter = new MAdapter(); ptlv.setAdapter(adapter); try { new MyAsyncTask().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 MyAsyncTask().execute("http://gank.io/api/data/"+ URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { try { index++; new MyAsyncTask().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 MyAsyncTask extends AsyncTask<String,Void,String>{ @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson=new Gson(); Bean bean = gson.fromJson(s, Bean.class); results = bean.getResults(); arr.addAll(results); adapter.notifyDataSetChanged(); ptlv.onRefreshComplete(); } @Override protected void onProgressUpdate(Void... values) { super.onProgressUpdate(values); } @Override protected String doInBackground(String... params) { return new NetWorkUtils().getJson(params[0]); } } class MAdapter extends BaseAdapter{ @Override public int getItemViewType(int position) { Bean.ResultsBean resultsBean = arr.get(position); if(resultsBean.getImages()==null){ return 1; } return 2; } @Override public int getViewTypeCount() { return 100; } @Override public int getCount() { return arr.size(); } @Override public Object getItem(int position) { return arr.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { int itemViewType = getItemViewType(position); switch (itemViewType){ case 1: convertView=View.inflate(getActivity(),R.layout.item2,null); TextView tv= (TextView) convertView.findViewById(R.id.it_text1); tv.setText(arr.get(position).getCreatedAt()); break; case 2: convertView=View.inflate(getActivity(),R.layout.item1,null); ImageView img= (ImageView) convertView.findViewById(R.id.it_image); TextView tv1= (TextView) convertView.findViewById(R.id.it_text); ImageLoader.getInstance().displayImage(arr.get(position).getImages().get(0),img); tv1.setText(arr.get(position).getCreatedAt()); } return convertView; } }}
阅读全文
0 0
- 侧滑+横向滚动条+PullToRefreshListView+拼接字符串接口
- 隐藏横向滚动条
- bootstrap横向滚动条
- 隐藏IE横向滚动条
- 去除框架横向滚动条
- frame去掉横向滚动条
- div纵向、横向滚动条
- 增加一个横向滚动条
- 去除框架横向滚动条
- 去掉iframe横向滚动条
- 横向滚动条的设置
- listbox 带横向滚动条
- 去除框架横向滚动条
- 去掉ie横向滚动条
- ListBox增加横向滚动条
- 隐藏CScrollView横向滚动条
- IE6 iframe 横向滚动条
- ListBox 添加横向滚动条
- platform总线注册过程及platform_driver与platform_device的匹配
- [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
- 在蓝图中使用计时器(Timer)转自:Epic Games社区
- Java常见的问题总结--持续更新中
- ORACLE 存储过程异常捕获并抛出
- 侧滑+横向滚动条+PullToRefreshListView+拼接字符串接口
- 设计模式之观察者模式
- spring中BeanFactory源码解读
- spring boot 测试单元修改数据库不成功
- 680. Valid Palindrome II
- Java 函数可变参数
- HDU1002 Sum Problem 大数 Java&&C
- Sqlite特点
- 【CSS揭秘】案例3、灵活的背景定位