package com.example.listviewtest;java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;android
import org.w3c.dom.Text;json
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;app
@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");dom
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");ide
}
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");this
}
else if(40<=i){
if(!arrayList.contains("biaoti5")){
arrayList.add("biaoti5");
hashMap.put(arrayList.size()-1,"biaoti5");xml
}
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>