当前位置: 移动技术网 > 移动技术>移动开发>Android > Android顶部三个TabLayout,滑动到某条目之后就会切换到相应的TabLayout(代码实现)

Android顶部三个TabLayout,滑动到某条目之后就会切换到相应的TabLayout(代码实现)

2018年09月29日  | 移动技术网移动技术  | 我要评论

android顶部三个tablayout,滑动到某条目之后就会切换到相应的tablayout(代码实现)


xml布局:



 

  

  

  
 
 
mainactivity中:
public class mainactivity extends appcompatactivity implements abslistview.onscrolllistener {

 private tablayout tb;
 private listview lv;
 private arraylist list;
 private int position;
 private customadapter adapter1;

 @override
 protected void oncreate(bundle savedinstancestate) {
  super.oncreate(savedinstancestate);
  setcontentview(r.layout.activity_main);
  list = new arraylist<>();
  for (int i = 0; i <200; i++) {
list.add("龙雀" + i);
  }
  initview();

 }

 private void initview() {
  tb = (tablayout) findviewbyid(r.id.tb);
  lv = (listview) findviewbyid(r.id.lv);
  adapter1 = new customadapter(list,this);
  lv.setadapter(adapter1);
  lv.setonscrolllistener(this);
  for (int i = 0; i < tb.gettabcount(); i++) {
tablayout.tab tab = tb.gettabat(i);
if (tab == null)
 return;

class c = tab.getclass();
try {

 field field = c.getdeclaredfield("mview");

 field.setaccessible(true);
 final view view = (view) field.get(tab);
 if (view == null)
  return;
 view.settag(i);
 view.setonclicklistener(new view.onclicklistener() {
  @override
  public void onclick(view v) {
position = (int) view.gettag();
switch (position) {

 case 0:
  lv.setselection(0);
  break;
 case 1:

  lv.setselection(50);


  break;
 case 2:
  lv.setselection(70);
  break;
}

  }
 });
} catch (exception e) {
 e.printstacktrace();
}
  }
 }

 int post;
 @override
 public void onscrollstatechanged(abslistview view, int scrollstate) {
  switch (scrollstate) {
case 0:
 switch (post) {
  case 0:

tablayout.tab tab = tb.gettabat(0);
tab.select();
break;

  case 50:
tablayout.tab tab2 = tb.gettabat(1);
tab2.select();

break;
  case 70:
tablayout.tab tab3 = tb.gettabat(2);
tab3.select();

break;


 }
 toast.maketext(this, "我现在处于不滑动状态", toast.length_short).show();
 break;
case 1:
 toast.maketext(this, "我现在处于滑动状态", toast.length_short).show();
 break;
  }

 }

 @override
 public void onscroll(abslistview view, int firstvisibleitem, int visibleitemcount, int totalitemcount) {
  switch (firstvisibleitem) {

case 0:
 post = 0;
 break;

case 50:
 post = 50;
 break;
case 70:
 post = 70;
 break;
case 49:
 post = 0;
 break;

case 69:
 post = 50;
 break;

  }
 }
}

适配器:

public class customadapter extends baseadapter {
 private arraylist list = new arraylist<>();
 private context context;

 public customadapter(arraylist list, context context) {
  this.list = list;
  this.context = context;
 }

 @override
 public int getcount() {
  return list.size();
 }

 @override
 public object getitem(int position) {
  return list.get(position);
 }

 @override
 public long getitemid(int position) {
  return position;
 }

 @override
 public view getview(int position, view convertview, viewgroup parent) {
  viewholder viewholder = null;
  if (convertview == null) {
convertview = layoutinflater.from(context).inflate(r.layout.item, null);
viewholder = new viewholder(convertview);
convertview.settag(viewholder);
  }else {
viewholder = (viewholder)convertview.gettag();
  }
  viewholder.tv.settext(list.get(position));
  return convertview;
 }

 public static class viewholder {
  public view rootview;
  public textview tv;

  public viewholder(view rootview) {
this.rootview = rootview;
this.tv = (textview) rootview.findviewbyid(r.id.tv);
  }
 }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网