ListView (很重要)
一、ListView(很重要) 1、工作原理: a) 调用Adapter中的getCount()方法,返回要当前列表里有多个个条目 b) 计算每一个条目的高度 c) 计算出当前手机屏幕可以显示多少个View d) 调用getView()方法,将当前的View显示在手机上面。
2、关键方法 实现getCount 返回总的个数
实现getView 返回每个位置对应的view对象.
3、屏幕上只显示固定的view,如果超出,将有一个新的view对象创建,那么就会有一个旧的view被回收
注意:如果ListView,屏幕拖拽速度过快,会报异常,原因是垃圾回收机制,来不及回收销毁的view 4、无穷尽的ListView public int getCount() {
return Integer.MAX_VALUE;// 设置无穷尽的条目
} |
二、无穷尽的ListView做法
1、xml布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
></ListView>
</RelativeLayout>
2、MainActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) this.findViewById(R.id.lv);
lv.setAdapter(new MyListAdapter());// Sets the data behind this ListView.
}
private class MyListAdapter extends BaseAdapter {
// 返回总的个数
@Override
public int getCount() {
return Integer.MAX_VALUE;// 设置无穷尽的条目
}
// 返回每个位置对应的view对象
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView tView = new TextView(MainActivity.this);
switch (position % 3) {
case 0:
tView.setText("苹果。。。");
break;
case 1:
tView.setText("荔枝。。。");
break;
case 2:
tView.setText("花生。。。");
break;
case 3:
tView.setText("香蕉。。。");
break;
}
return tView;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}
}
3、效果:
|