ListView
此处使用适配器模式来实现对ListView
控件的数据填充(lesson3),实现自定义数据类型和View控件的桥梁。
MainActivity:
public class MainActivity extends AppCompatActivity {
private List<Bean> data = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for(int i = 0;i < 100;i ++){
Bean bean = new Bean();
bean.setName("st" + i);
data.add(bean);
}
ListView listView = findViewById(R.id.lv);
listView.setAdapter(new MyAdapter(data,this));
}
}
MyAdapter:
public class MyAdapter extends BaseAdapter{
private List<Bean> data;
private Context context;
public MyAdapter(List<Bean> data, Context context) {
this.data = data;
this.context = context;
}
@Override
public int getCount(){
return data.size();
}
@Override
public Object getItem(int position){
return null;
}
@Override
public long getItemId(int position){
return position;
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
ViewHolder viewHolder;
//textView存放于viewHolder中,减少convertView的findViewById的使用次数
if(convertView == null){
//渲染
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.list_item,parent,false);
viewHolder.textView = convertView.findViewById(R.id.tv);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.textView.setText(data.get(position).getName());
Log.e("tag","getView:" + position);
return convertView;
}
private final class ViewHolder{
TextView textView;
}
}
在Android开发中,使用Bean类最多的场景是从网络获取数据,将数据以Bean类组织,Bean类中的数据用于填充UI界面中的控件。
javaBean,在一般的程序中,我们称它为数据层,就是用来设置数据的属性和一些行为,然后会提供获取属性和设置属性的getXXX和setXXX方法,JavaBean是一种JAVA语言写成的可重用组件