zoukankan      html  css  js  c++  java
  • listview,fragment结合起来

      这是csdn上的以个demo,很适合初学者。来源:http://download.csdn.net/detail/endlife99/7274419,侵删。

    MainActiviy:

    package com.example.viewpagerdemo;
    
    import java.util.ArrayList;
    
    import android.content.res.Resources;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.util.DisplayMetrics;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.animation.TranslateAnimation;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class MainActivity extends FragmentActivity {
    	private ArrayList<Fragment> list = null;
    	private ViewPager mViewPager;
    	private ImageView iv_bottom_line;
    	private Resources resources;
    	private TextView zh;
    	private TextView xw;
    	private TextView yl;
    	private TextView ty;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		initView();
    		initWidth();
    		initViewPager();
    	}
    	private void initViewPager() {
    		Fragment zh = MyFragment.newInstance(Contents.ZH);
    		Fragment xw = MyFragment.newInstance(Contents.XW);
    		Fragment yl = MyFragment.newInstance(Contents.YL);
    		Fragment ty = MyFragment.newInstance(Contents.TY);
    		list = new ArrayList<Fragment>();
    		list.add(zh);
    		list.add(xw);
    		list.add(yl);
    		list.add(ty);
    		mViewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(),
    				list));
    		mViewPager.setCurrentItem(0);
    		mViewPager.setOnPageChangeListener(new MyViewPagerChangedListener());
    	}
    	private void initView() {
    		mViewPager = (ViewPager) findViewById(R.id.myviewpager);
    		iv_bottom_line = (ImageView) findViewById(R.id.iv_bottom_line);
    		zh = (TextView) findViewById(R.id.zh);
    		xw = (TextView) findViewById(R.id.xw);
    		yl = (TextView) findViewById(R.id.yl);
    		ty = (TextView) findViewById(R.id.ty);
    		zh.setOnClickListener(new MyClickListener(0));
    		xw.setOnClickListener(new MyClickListener(1));
    		yl.setOnClickListener(new MyClickListener(2));
    		ty.setOnClickListener(new MyClickListener(3));
    	}
    	private int first = 0;
    	private int second = 0;
    	private int third = 0;
    	private void initWidth() {
    		int lineWidth = iv_bottom_line.getLayoutParams().width;
    		Log.d("lineWidth ", lineWidth + "");
    		DisplayMetrics dm = new DisplayMetrics();
    		getWindowManager().getDefaultDisplay().getMetrics(dm);
    		int width = dm.widthPixels;
    		resources = getResources();
    		first = width / 4;
    		second = first * 2;
    		third = first * 3;
    	}
    	private int currPosition = 0;
    	class MyViewPagerChangedListener implements OnPageChangeListener {
    		@Override
    		public void onPageScrollStateChanged(int arg0) {
    		}
    		@Override
    		public void onPageScrolled(int arg0, float arg1, int arg2) {
    		}
    		@Override
    		public void onPageSelected(int arg0) {
    			Log.d("onchanged", "onchanged " + arg0);
    			TranslateAnimation ta = null;
    			switch (arg0) {
    			case 0:
    				if (currPosition == 1) {
    					ta = new TranslateAnimation(first, 0, 0, 0);
    				}
    				if (currPosition == 2) {
    					ta = new TranslateAnimation(second, 0, 0, 0);
    				}
    				if (currPosition == 3) {
    					ta = new TranslateAnimation(third, 0, 0, 0);
    				}
    				break;
    			case 1:
    				if (currPosition == 0) {
    					ta = new TranslateAnimation(0, first, 0, 0);
    				}
    				if (currPosition == 2) {
    					ta = new TranslateAnimation(second, first, 0, 0);
    				}
    				if (currPosition == 3) {
    					ta = new TranslateAnimation(third, first, 0, 0);
    				}
    				break;
    			case 2:
    				if (currPosition == 0) {
    					ta = new TranslateAnimation(0, second, 0, 0);
    				}
    				if (currPosition == 1) {
    					ta = new TranslateAnimation(first, second, 0, 0);
    				}
    				if (currPosition == 3) {
    					ta = new TranslateAnimation(third, second, 0, 0);
    				}
    				break;
    			case 3:
    				if (currPosition == 0) {
    					ta = new TranslateAnimation(0, third, 0, 0);
    				}
    				if (currPosition == 1) {
    					ta = new TranslateAnimation(first, third, 0, 0);
    				}
    				if (currPosition == 2) {
    					ta = new TranslateAnimation(second, third, 0, 0);
    				}
    				break;
    			}
    			currPosition = arg0;
    			ta.setDuration(300);
    			ta.setFillAfter(true);
    			iv_bottom_line.startAnimation(ta);
    		}
    	}
    	class MyClickListener implements OnClickListener {
    		private int index = 0;
    		public MyClickListener(int i) {
    			index = i;
    		}
    		@Override
    		public void onClick(View v) {
    			mViewPager.setCurrentItem(index);
    		}
    	}
    }
    

      MyFragment:

    package com.example.viewpagerdemo;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.AbsListView;
    import android.widget.AbsListView.OnScrollListener;
    import android.widget.Button;
    import android.widget.ListView;
    
    public class MyFragment extends Fragment{
    	
    	private String key = null;
    	
    	
    	static MyFragment newInstance(String s){
    		MyFragment myFragment = new MyFragment();
    		Bundle bundle = new Bundle();
    		bundle.putString("key", s);
    		myFragment.setArguments(bundle);
    		return myFragment;
    		
    	}
    	
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		
    		Bundle bundle = getArguments();
    		key = bundle != null? bundle.getString("key") : null;
    		super.onCreate(savedInstanceState);
    	}
    	
    	
    	private ListView listView;
    	
    	private MyListViewAdapter adapter;
    	
    	private List<String> list ;
    	
    	@Override
    	public View onCreateView(LayoutInflater inflater, ViewGroup container,
    			Bundle savedInstanceState) {
    		View view = null; 
    		Button button = null;
    		if (key == null || key.equals(Contents.ZH)) {
    			view = inflater.inflate(R.layout.lay1, container, false);
    			button = (Button) view.findViewById(R.id.confirm);
    			button.setOnClickListener(new MyClickListener(1));
    		}
    		
    		if (key != null && key.equals(Contents.XW)) {
    			view = inflater.inflate(R.layout.lay2,container,false);
    			button = (Button) view.findViewById(R.id.confirm02);
    			button.setOnClickListener(new MyClickListener(2));
    		}
    		
    		if (key != null && key.equals(Contents.YL)) {
    			view = inflater.inflate(R.layout.lay3,container,false);
    		}
    		
    		if (key != null && key.equals(Contents.TY)) {
    			view = inflater.inflate(R.layout.lay4,container,false);
    			listView = (ListView) view.findViewById(R.id.mylistview);
    			list = getdata();
    			adapter = new MyListViewAdapter(getActivity(),list);
    			listView.setAdapter(adapter);
    			
    			//listView滑动状态判断
    			listView.setOnScrollListener(new OnScrollListener() {
    				
    				@Override
    				public void onScrollStateChanged(AbsListView arg0, int arg1) {
    					// TODO Auto-generated method stub
    					
    				}
    				
    				@Override
    				public void onScroll(AbsListView arg0, int firstItem, int visibleItemCount, int totalItemCount) {
    					// TODO Auto-generated method stub
    					
    					//到达底部
    					if (firstItem + visibleItemCount == totalItemCount) {
    						list = getdata();
    						adapter.notifyDataSetChanged();
    					}
    				}
    			});
    			
    		}
    		
    		return view;
    	}
    	
    	private List<String> getdata(){
    		int size = 0;
    		if (list != null) {
    			size = list.size();
    			
    		}
    		if (list == null) {
    			list = new ArrayList<String>();
    		}
    		
    		for (int i = 0; i < 20; i++) {
    			list.add("item" + i + size);
    		}
    		return list;
    	}
    	
    	class MyClickListener implements OnClickListener{
    
    		int index;
    		
    		public MyClickListener(int i) {
    			index = i;
    		}
    
    		@Override
    		public void onClick(View v) {
    			Log.d("onclick", "onclick " + index);
    		}
    		
    	}
    
    }
    

      MyListViewAdapter:

    package com.example.viewpagerdemo;
    
    import java.util.List;
    
    import android.content.Context;
    import android.support.v4.app.FragmentActivity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class MyListViewAdapter extends BaseAdapter {
    
    	List<String>list;
    	
    	LayoutInflater inflater;
    	
    	FragmentActivity activity;
    	
    	public MyListViewAdapter(FragmentActivity fragmentActivity, List<String> list) {
    		// TODO Auto-generated constructor stub
    		this.list = list;
    		this.activity = fragmentActivity;
    		inflater = (LayoutInflater) fragmentActivity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    	}
    
    	@Override
    	public int getCount() {
    		// TODO Auto-generated method stub
    		return list.size();
    	}
    
    	@Override
    	public Object getItem(int arg0) {
    		// TODO Auto-generated method stub
    		return list.get(arg0);
    	}
    
    	@Override
    	public long getItemId(int arg0) {
    		// TODO Auto-generated method stub
    		return arg0;
    	}
    
    	@Override
    	public View getView(int arg0, View view, ViewGroup arg2) {
    		// TODO Auto-generated method stub
    		if (view == null) {
    			view = inflater.inflate(R.layout.item, null);
    		} 
    		
    		
    		return view;
    	}
    	
    	class ViewHolder {
    		TextView tv;
    		ImageView im;
    	}
    
    }
    

      FragmentAdapter:

    package com.example.viewpagerdemo;
    
    import java.util.ArrayList;
    
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    
    public class FragmentAdapter extends FragmentPagerAdapter{
    
    	private ArrayList<Fragment> list;
    	
    	public FragmentAdapter(FragmentManager fm) {
    		super(fm);
    	}
    	
    	
    
    	public FragmentAdapter(FragmentManager fm,
    			ArrayList<Fragment> list) {
    		super(fm);
    		this.list = list;
    	}
    
    
    
    	@Override
    	public Fragment getItem(int arg0) {
    		// TODO Auto-generated method stub
    		return list.get(arg0);
    	}
    
    	@Override
    	public int getCount() {
    		// TODO Auto-generated method stub
    		return list.size();
    	}
    	
    }
    

      Contents:

    package com.example.viewpagerdemo;
    
    public class Contents {
    
    	public static final String ZH = "zonghe";
    
    	public static final String XW = "xinwen";
    
    	public static final String YL = "yule";
    
    	public static final String TY = "tiyu";
    
    }
    

      layout文件夹:

    <LinearLayout 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"
        android:orientation="vertical"
        tools:context=".MainActivity" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#20d5f0"
            android:paddingBottom="2dp"
            android:paddingTop="2dp" >
    
            <TextView
                
                android:id="@+id/zh"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="综合"
                android:textColor="#fff"
                android:textSize="16sp" />
    
            <TextView
                android:id="@+id/xw"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="新闻"
                android:textColor="#fff"
                android:textSize="16sp" />
    
            <TextView
                android:id="@+id/yl"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="娱乐"
                android:textColor="#fff"
                android:textSize="16sp" />
    
            <TextView
                android:id="@+id/ty"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:gravity="center"
                android:text="体育"
                android:textColor="#fff"
                android:textSize="16sp" />
        </LinearLayout>
    
        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom"
                android:orientation="vertical"
                android:paddingBottom="3dip"
                android:background="#20d5f0"
                 >
    
                <ImageView
                    android:id="@+id/iv_bottom_line"
                    android:layout_width="40dip"
                    android:layout_height="2dip"
                    android:layout_marginLeft="20dip"
                    android:scaleType="matrix"
                    android:src="#fff" />
            </LinearLayout>
    
        <android.support.v4.view.ViewPager
            android:id="@+id/myviewpager"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="#ffffff" />
    
    </LinearLayout>
    

      效果图如下:

    item.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        android:layout_width="match_parent"
    	android:layout_height="wrap_content"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <ImageView 
            android:id="@+id/itemImage"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:src="@drawable/ic_launcher"
            android:layout_alignParentLeft="true"
            
            />
        <TextView 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="前段时间做了一个与LBS有关的项目"
            android:layout_toRightOf="@+id/itemImage"
            android:layout_centerVertical="true"
            />
        
    </RelativeLayout>
    

      lay1.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
         >
         <TextView 
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:text="第一页"
             android:gravity="center"
             />
         <Button 
             android:id="@+id/confirm"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginLeft="2dp"
             android:layout_marginRight="2dp"
             android:text="确定"
             />
         <Button 
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginLeft="2dp"
             android:layout_marginRight="2dp"
             android:text="分享"
             />
         <Button 
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginLeft="2dp"
             android:layout_marginRight="2dp"
             android:text="浏览"
             />
         <Button 
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_marginLeft="2dp"
             android:layout_marginRight="2dp"
             android:text="取消"
             />
    
    </LinearLayout>
    

      lay02.xml,lay03.xml除了最顶端设置的页码不一样,其他都一直,所以之类就不放上其对应的xml了。

    lay04:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical"
         >
       <ListView 
           android:id="@+id/mylistview"
           android:layout_width="fill_parent"
           android:layout_height="fill_parent"
           />  
    
    </LinearLayout>
    

      最终做出来的效果图:

  • 相关阅读:
    PHP学习笔记11——文件处理
    PHP学习笔记10——GD图片处理
    PHP学习笔记09——GD生成验证码实例
    PHP学习笔记08——GD绘图基础
    PHP学习笔记07——字符串和正则
    poj 3254 Corn Fields
    线程
    字符串是否包含问题
    左旋转字符串
    凸包问题
  • 原文地址:https://www.cnblogs.com/Sunnor/p/4719687.html
Copyright © 2011-2022 走看看