文档章节

listview 滑动更改标题

 胡欢哥哥
发布于 2015/10/18 07:59
字数 781
阅读 99
收藏 5

package com.example.listviewtest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;

import org.w3c.dom.Text;

import android.support.v7.app.ActionBarActivity;
import android.app.Activity;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MainActivity extends Activity {
 ListView listview;
 HashMap<Integer,String> hashMap=new HashMap<Integer,String>();
 ArrayList<String> arrayList=new ArrayList<String>();
 private TextView textView;
 private int fir;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  listview=(ListView)findViewById(R.id.lt);
  textView = (TextView)findViewById(R.id.bt);
  textView.setText("biaoti1");

  for (int i = 0; i <90; i++) {//模仿从网络中获取的json数据
   if(i<10){
    if(!arrayList.contains("biaoti1")){
     arrayList.add("biaoti1");//标题只有一个
     hashMap.put(arrayList.size()-1,"biaoti1");//hashmap 记录所有的标题位置
    }
    arrayList.add(i+"");
    hashMap.put(arrayList.size()-1,"biaoti1");

   }
   else if(10<=i&&i<20){
    if(!arrayList.contains("biaoti2")){
     arrayList.add("biaoti2");
     hashMap.put(arrayList.size()-1,"biaoti2");
    }
    arrayList.add(i+"");
    hashMap.put(arrayList.size()-1,"biaoti2");

   }
   else if(20<=i&&i<30){
    if(!arrayList.contains("biaoti3")){
     arrayList.add("biaoti3");
     hashMap.put(arrayList.size()-1,"biaoti3");
    }
    arrayList.add(i+"");
    hashMap.put(arrayList.size()-1,"biaoti3");
   }
   else if(30<=i&&i<40){
    if(!arrayList.contains("biaoti4")){
     arrayList.add("biaoti4");
     hashMap.put(arrayList.size()-1,"biaoti4");
    }
    arrayList.add(i+"");
    hashMap.put(arrayList.size()-1,"biaoti4");


   }
   else if(40<=i){
    if(!arrayList.contains("biaoti5")){
     arrayList.add("biaoti5");
     hashMap.put(arrayList.size()-1,"biaoti5");

    }
    arrayList.add(i+"");
    hashMap.put(arrayList.size()-1,"biaoti5");

   }

 

  }

 

 

    MyAdater myAdater = new MyAdater();
  listview.setAdapter(myAdater);
  listview.setOnScrollListener(new OnScrollListener() {

   @Override
   public void onScrollStateChanged(AbsListView view, int scrollState) {
    // TODO Auto-generated method stub
   }

   @Override
   public void onScroll(AbsListView view, int firstVisibleItem,
     int visibleItemCount, int totalItemCount) {
    // TODO Auto-generated method stub
    String nowTitle=textView.getText().toString();
   
     if(hashMap.get(firstVisibleItem+1)!=nowTitle){//下滑
      textView.setText(hashMap.get(firstVisibleItem+1));

     
    }
   
    else if(hashMap.get(firstVisibleItem)!=nowTitle){//上
     textView.setText(nowTitle);
     
     
    }

 

 


   }
  });


 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  // Handle action bar item clicks here. The action bar will
  // automatically handle clicks on the Home/Up button, so long
  // as you specify a parent activity in AndroidManifest.xml.
  int id = item.getItemId();
  if (id == R.id.action_settings) {
   return true;
  }
  return super.onOptionsItemSelected(item);
 }
 class MyAdater extends BaseAdapter{

  private View view;
  @Override
  public int getCount() {
   // TODO Auto-generated method stub
   return arrayList==null?0:arrayList.size();
  }

  @Override
  public Object getItem(int arg0) {
   // TODO Auto-generated method stub
   return null;
  }

  @Override
  public long getItemId(int arg0) {
   // TODO Auto-generated method stub
   return 0;
  }
  @Override
  public int getViewTypeCount() {//重写的时候必须带上 不然报错
   // TODO Auto-generated method stub
   return 2;
  }
  @Override
  public int getItemViewType(int position) {//获取相对应的标题
   // TODO Auto-generated method stub
   if(!arrayList.contains("biaoti")){
    return 1;

   }
   else {
    return 0;
   }

  }
  @Override
  public View getView(int arg0, View arg1, ViewGroup arg2) {
   // TODO Auto-generated method stub
   int type = getItemViewType(arg0);
   if(arg1==null){
    if(type==0){
     view = getLayoutInflater().inflate(R.layout.title,null);
     MyTitle myTitle=new MyTitle();
     myTitle.title=(TextView)view.findViewById(R.id.title);
     view.setTag(myTitle);
    }
    else if(type==1){
     view=getLayoutInflater().inflate(R.layout.item,null);
     MyItem myItem=new MyItem();
     myItem.title=(TextView)view.findViewById(R.id.tv);
     view.setTag(myItem);
    }
   }
   else {
    view=arg1;
   }
   switch (type) {
   case 0:
    MyTitle myTitle=(MyTitle)view.getTag();
    myTitle.title.setText(arrayList.get(arg0));
    break;
   case 1:
    MyItem myItem=(MyItem)view.getTag();
    myItem.title.setText(arrayList.get(arg0));

    break;
   default:
    break;
   }

 

 

 


   return view;
  }
  class MyTitle {
   TextView title;

  }
  class MyItem{
   TextView title;

  }

 


 }

}

布局:activety_main

 

 

<RelativeLayout 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" >

    <ListView
        android:id="@+id/lt"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <TextView
        android:id="@+id/bt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/holo_green_dark"
        android:gravity="center"
        android:text="biaotu" />

</RelativeLayout>

item.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="nihao"
       
        />

</LinearLayout>

title.xml:

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="biaoti"
        android:textColor="@android:color/holo_blue_dark" />

</LinearLayout>

 

 

 

 

 


 

 

 

 

 

 

 

 

 


 

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 5
码字总数 1646
作品 0
合肥
私信 提问
listview上拉隐藏标题与下拉显示标题

这个功能非常普遍了,主要是用户在下拉列表的时候,隐藏标题来扩大用户浏览列表的范围 本方法的设计思路是在列表上覆盖标题栏,然后当列表滑到顶部的时候,在列表的顶部设置一个padding控件来...

Carbenson
2016/08/02
828
2
安卓页面滑动以后怎么监听当前页面

@SuShine 你好,想跟你请教个问题:安卓页面滑动以后怎么监听当前页面 我们写了三个页面,标题和底部都是定义好的,中间是用listView,可是后来在instantiateItem(View arg0, int arg1)中写了...

光旭
2013/12/25
212
0
我们为什么要使用RecyclerView

我们为什么要使用RecyclerView 前两天看到葱花同学的文章RecyclerView 和 ListView 使用对比分析,加上之前在公司做code reiview的时候也遇到过RecyclerView和ListView比较的问题,所以想在这...

3kqing
2016/09/06
23
0
android中ViewPager详解--视图滑动、界面卡等效果 (一)

这是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一。利用它,我们可以做很多事情,从最简单的导航,到页面菜单...

一别经年
2014/01/21
0
0
android源码的更改

listview中,当滚动条滑动到底部时,如果鼠标继续滑动,滚动条也没有移动,请问:如何时滚动条从底部跳回到顶部? 当onScrollStateChanged的state=OnScrollListener.SCROLL_STATE_IDLE时,如...

菜_菜093
2011/04/08
183
0

没有更多内容

加载失败,请刷新页面

加载更多

Kylin2.5.0环境搭建及操作记录

Apache Kylin是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。它能在亚秒内查询巨大的H...

PeakFang-BOK
6分钟前
0
0
SpringBoot整合es

文档对像 @Document(indexName = "bigdata",type = "tag")public class User { @Idprivate String openid; private List<String> tags;public String getOpenid() ......

魔法王者安琪拉
10分钟前
0
0
windows下让 jar 在后台运行的办法

windows下 运行 java jar 不出现 命令行 窗口 新建一个披处理 run.bat,内容如下 @echo off start javaw -jar xx.jar exit 双击运行即可。...

glen_xu
19分钟前
1
0
jdk1.8 lambda stream 指定的对象属性进行去重

原因:因为Stream提供的distinct()方法只能去除重复的对象,无法根据指定的对象属性进行去重,可以应付简单场景。 解决方案: //去重,共同信息保存到bizPledgeSupplierVOs里bizPledgeSupp...

INSISTQIAO
21分钟前
0
0
vue nextTick深入理解---vue性能优化、DOM更新时机、事件循环机制

定义[nextTick、事件循环] nextTick的由来: 由于vue的数据驱动视图更新是异步的,即修改数据的当下,视图不会立即更新,而是等同一事件循环中的所有数据变化完成之后再统一进行视图更新。...

JamesView
29分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部