直接上代码:
package com.antest;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
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 List<String> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList<String>();
for (int i = 0; i < 100; i++) {
list.add(i + "");
}
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);
}
BaseAdapter adapter = new BaseAdapter() {
@Override
public int getCount() {
return 100;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Holder holder;
if (convertView == null) {
holder = new Holder();
convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.list_item, null);
holder.tv = (TextView) convertView.findViewById(R.id.tv);
convertView.setTag(holder);
Log.i("lk", position + "");
} else {
holder = (Holder) convertView.getTag();
}
holder.tv.setText(getItem(position).toString());
return convertView;
}
};
class Holder {
TextView tv;
}
}
手机屏幕显示:
输出:
05-13 16:28:18.563: I/lk(21641): 0
05-13 16:28:18.563: I/lk(21641): 1
05-13 16:28:18.563: I/lk(21641): 2
05-13 16:28:18.563: I/lk(21641): 3
05-13 16:28:18.563: I/lk(21641): 4
05-13 16:28:18.563: I/lk(21641): 5
05-13 16:28:18.573: I/lk(21641): 6
05-13 16:28:18.573: I/lk(21641): 7
05-13 16:28:18.573: I/lk(21641): 8
05-13 16:28:18.573: I/lk(21641): 9
05-13 16:28:18.573: I/lk(21641): 10
05-13 16:28:18.573: I/lk(21641): 11
05-13 16:28:18.573: I/lk(21641): 12
05-13 16:28:18.573: I/lk(21641): 13
05-13 16:28:18.573: I/lk(21641): 14
05-13 16:28:18.573: I/lk(21641): 15
05-13 16:28:18.573: I/lk(21641): 16
05-13 16:28:18.573: I/lk(21641): 17
05-13 16:28:18.583: I/lk(21641): 18
05-13 16:28:18.583: I/lk(21641): 19
05-13 16:28:18.583: I/lk(21641): 20
05-13 16:28:18.583: I/lk(21641): 21
05-13 16:28:18.583: I/lk(21641): 22
05-13 16:28:18.583: I/lk(21641): 23
不管怎么上下滑动屏幕,输出结果不变!
本文介绍了一个具体的Android应用案例,展示了如何使用ListView展示大量数据,并通过ViewHolder模式减少内存消耗,提高滚动性能。文章详细解释了自定义BaseAdapter的过程,包括getView方法中对convertView的复用,以确保在滚动列表时不会频繁创建新的视图。
2万+

被折叠的 条评论
为什么被折叠?



