您的位置:首页 > 其它

listview 滑动更改标题

2015-10-18 00:00 253 查看
摘要: 大家好 又到了给你分享代码的时刻 一直在看别人app 然后仿照别人app 发现别人的listview滑动title变化特别好 网上的框架也看了 太麻烦了 现在分享一个简单的给大家 但是没有那么好 不过基本上可以满足你们的要求,屁话不说帖代码

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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息