ViewPager + GridView implements horizontal sliding to simulate public comments. viewpagergridview
First look at the demo effect:
1 ViewPager class provides new effects of multi-interface switching.
The new effect has the following features:
[1] One of the interfaces in A group is currently displayed.
[2] when a user slides between the left and right, the current screen displays the current interface and a part of the next interface.
[3] After sliding, the page automatically jumps to the selected page
2. Several important methods and interfaces
1. The OnPageChangeListener ViewPager page is used to switch the listener interface. Among them, we often need to implement public void onPageSelected (int arg0), public void onPageScrolled (int arg0, float arg1, int arg2 ), public void onPageScrollStateChanged (int arg0) has three aspects. The first method is more used;
2. setCurrentItem (int item) to set the jump to the current page;
3. to display ViewPager, The PagerAdapter class is indispensable for adaptation. Among them, we often need to implement the following methods: public void destroyItem (View arg0, int arg1, Object arg2 ), public int getCount (), public Object instantiateItem (View arg0, int arg1), public boolean isViewFromObject (View arg0, Object arg1)
3. Sample Code
Java code
Package mm.shandong.com. testviewpagergrid; import android. content. res. typedArray; import android. support. v4.view. pagerAdapter; import android. support. v4.view. viewPager; import android. support. v7.app. appCompatActivity; import android. OS. bundle; import android. view. layoutInflater; import android. view. view; import android. view. viewGroup; import android. widget. baseAdapter; import android. widget. gridView; import android. widget. imageView; import android. widget. radioButton; import android. widget. radioGroup; import android. widget. textView; import android. widget. toast; import java. util. arrayList; import java. util. list; import mm.shandong.com. testviewpagergrid. entity. catogray; public class TestViewpagerGridActivity extends AppCompatActivity {ViewPager comment; List <Catogray> catogarys; String [] comment; int [] comment; LayoutInflater layoutInflater; List <View> gridViews; RadioGroup comment; @ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_test_viewpager_grid); catogary_names = getResources (). getStringArray (R. array. catogary_names); TypedArray typedArray = getResources (). obtainTypedArray (R. array. catogary_resourceIds); catogary_resourceIds = new int [typedArray. length ()]; for (int I = 0; I <typedArray. length (); I ++) {catogary_resourceIds [I] = typedArray. getResourceId (I, 0);} catogarys = new ArrayList <Catogray> (); viewPagerHomeFragment = (ViewPager) findViewById (R. id. viewPagerHomeFragment); layoutInflater = getLayoutInflater (); radioGroup_index_fragment = (RadioGroup) findViewById (R. id. radioGroup_index_fragment); for (int I = 0; I <catogary_names.length; I ++) {Catogray catogary = new Catogray (); catogary. setName (catogary_names [I]); catogary. setImage_source (catogary_resourceIds [I]); catogarys. add (catogary);} initViewPager ();} public void initViewPager () {gridViews = new ArrayList <View> (); // define the first GridView gridView1 = (GridView) layoutInflater. inflate (R. layout. vertex, null); MyGridViewAdapter myGridViewAdapter1 = new MyGridViewAdapter (0, 8); gridView1.setAdapter (myGridViewAdapter1); // defines the second GridView gridView2 = (GridView) layoutInflater. inflate (R. layout. vertex, null); MyGridViewAdapter myGridViewAdapter2 = new MyGridViewAdapter (1, 8); gridView2.setAdapter (myGridViewAdapter2); // defines the third GridView gridView3 = (GridView) layoutInflater. inflate (R. layout. grid_fragment_home, null); MyGridViewAdapter myGridViewAdapter3 = new MyGridViewAdapter (2, 8); gridView3.setAdapter (myGridViewAdapter3); gridViews. add (gridView1); gridViews. add (gridView2); gridViews. add (gridView3); // defines the PagerAdapter viewPagerHomeFragment of viewpager. setAdapter (new PagerAdapter () {@ Override public boolean isViewFromObject (View arg0, Object arg1) {// TODO Auto-generated method stub return arg0 = arg1 ;} @ Override public int getCount () {// TODO Auto-generated method stub return gridViews. size () ;}@ Override public void destroyItem (ViewGroup container, int position, Object object) {// TODO Auto-generated method stub container. removeView (gridViews. get (position); // super. destroyItem (container, position, object) ;}@ Override public Object instantiateItem (ViewGroup container, int position) {// TODO Auto-generated method stub container. addView (gridViews. get (position); return gridViews. get (position) ;}}); // register the viewPager page to select the event viewPagerHomeFragment in response to the change. setOnPageChangeListener (new ViewPager. onPageChangeListener () {@ Override public void onPageScrollStateChanged (int position) {// TODO Auto-generated method stub} @ Override public void onPageScrolled (int arg0, float arg1, int arg2) {// TODO Auto-generated method stub} @ Override public void onPageSelected (int position) {// TODO Auto-generated method stub RadioButton radioButton = (RadioButton) locate (position ); radioButton. setChecked (true) ;}}) ;}// the Adapter public class MyGridViewAdapter extends BaseAdapter {private int page; private int count; public MyGridViewAdapter (int page, int count) {this. page = page; this. count = count ;}@ Override public int getCount () {// TODO Auto-generated method stub return 8 ;}@ Override public Catogray getItem (int position) {// TODO Auto-generated method stub return catogarys. get (page * count + position) ;}@ Override public long getItemId (int position) {// TODO Auto-generated method stub return 0 ;} @ Override public View getView (int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stub ViewHolder viewHolder = null; final Catogray catogary = catogarys. get (page * count + position); if (convertView = null) {viewHolder = new ViewHolder (); convertView = layoutInflater. inflate (R. layout. grid_fragment_home_item, null); viewHolder. grid_fragment_home_item_img = (ImageView) convertView. findViewById (R. id. grid_fragment_home_item_img); viewHolder. grid_fragment_home_item_txt = (TextView) convertView. findViewById (R. id. grid_fragment_home_item_txt); convertView. setTag (viewHolder);} else {viewHolder = (ViewHolder) convertView. getTag ();} viewHolder. grid_fragment_home_item_img.setImageResource (catogary. getImage_source (); viewHolder. grid_fragment_home_item_txt.setText (catogary. getName (); viewHolder. grid_fragment_home_item_img. setOnClickListener (new View. onClickListener () {@ Override public void onClick (View view) {// TODO Auto-generated method stub Toast. makeText (TestViewpagerGridActivity. this, catogary. getName (), Toast. LENGTH_SHORT ). show () ;}}); return convertView ;}} public class ViewHolder {public ImageView grid_fragment_home_item_img; public TextView grid_fragment_home_item_txt ;}}
Download Demo
Finally, the above examples all come from the same source as Android. Please download the app treasure or pea pod:Http://android.myapp.com/myapp/detail.htm? ApkName = com. shandong. mm. androidstudy, The source code example documentation is exhausted.