稍微修改了下你的代码,把显示数据的原理多研究研究
public class MainActivity extends Activity implements View.OnClickListener {
ListView lv;
Button bt;
MyAdapter adapter;
List a = new ArrayList();
//int b=a.size()+1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView) findViewById(R.id.lv);
bt=(Button) findViewById(R.id.bt);
bt.setOnClickListener(this);
//初始化一条数据,让listview默认显示的时候有一条数据
a.add("第1条数据");
adapter=new MyAdapter(a,MainActivity.this);
lv.setAdapter(adapter);
}
@Override
public void onClick(View v) {
//点击添加时,给 a 中添加一条数据,利用adapter.notifyDataSetChanged();刷新显示数据
int lineNum = a.size() + 1;
a.add("第" + lineNum + "条数据");
adapter.notifyDataSetChanged();
}
class MyAdapter extends BaseAdapter {
TextView tv;
List<String> data;
Context context;
public MyAdapter(List<String> a,Context c) {
this.data = a;
this.context = c;
}
@Override
public int getCount() {
return this.data.size();
}
@Override
public String getItem(int position) {
return a.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
CacheView cacheView = null;
if (convertView == null) {
cacheView = new CacheView();
convertView = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.textview, null);
cacheView.dispalyTextView = (TextView)convertView.findViewById(R.id.textView1);
convertView.setTag(cacheView);
} else {
cacheView = (CacheView) convertView.getTag();
}
cacheView.dispalyTextView.setText("textview_"+ data.get(position));
return convertView;
}
class CacheView{
TextView dispalyTextView;
}
}
}