Android入门练习——ArrayAdapter绑定ListView
碎碎念:
越学Android越觉得有意思啊,以前觉得java很枯燥,现在倒是有点后悔之前的基础没打好了,好了以后一边补漏洞一边学吧~
什么是Adapter?
简单来说就是连接前端UI和后端数据的一座桥梁。
有很多种不同类型的Adapter,本片介绍的是最常用的一种——ArrayAdapter,(其他种类的之后再整理)。
案例实现
实现步骤:
1 在activity_main.xml中布局一个ListView
<ListView
android:id="@+id/list_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
2 新建一个xml,命名为 fruit_item.xml,里面用来布局一项list,即一个图片一串文字
<ImageView
android:id="@+id/fruit_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/fruit_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
/>
3 新建一个class文件fruit.java 用来定义水果的名称和图片名称
public class Fruit {
private String name;
private int imageID;
public Fruit(String name, int imageId){
this.name= name;
this.imageID=imageId;
}
public String getName(){
return name;
}
public int getimageID(){
return imageID;
}
}
4 自定义一个adapter并继承ArrayAdapter
public class FruitAdapter extends ArrayAdapter<Fruit>{
private int resourceId;
public FruitAdapter(Context context, int resource, List<Fruit> objects) {
super(context, resource, objects);
// TODO Auto-generated constructor stub
resourceId=resource;
}
//重写getView方法,getView方法在每个item显示时都被调用
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
//获取当前项Fruit的实例,通过 List<Fruit> objects
Fruit fruit=getItem(position);
//将xml布局文件实例化为一个view
View view=LayoutInflater.from(getContext()).inflate(resourceId, null);//why null? 父元素值
//实例化水果布局xml中的组件
ImageView fruitImage=(ImageView)view.findViewById(R.id.fruit_image);
TextView fruitNmae=(TextView)view.findViewById(R.id.fruit_name);
fruitImage.setImageResource(fruit.getimageID());
fruitNmae.setText(fruit.getName());
return view;
}
}
5 在MainActivity.java中实例化Fruit对象,并用适配器连接前面的UI,即可完成。
public class MainActivity extends Activity {
private List<Fruit> fruitList=new ArrayList<Fruit>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Fruit apple=new Fruit("Apple",R.drawable.apple);
fruitList.add(apple);
Fruit banana=new Fruit("Banana",R.drawable.banana);
fruitList.add(banana);
Fruit orange=new Fruit("Orange",R.drawable.orange);
fruitList.add(orange);
Fruit watermelon=new Fruit("Watermelon",R.drawable.watermelon);
fruitList.add(watermelon);
FruitAdapter adapter=new FruitAdapter(MainActivity.this, R.layout.fruit_item, fruitList);
ListView listView=(ListView)findViewById(R.id.list_view);
listView.setAdapter(adapter);
}
}
Reflection:
其实是今天刚学完这个adapter,再加上之前的Java基础忘得差不多,目前还没有完全把整个过程理解透,只是跟着老师敲了一遍代码,过几天再来看看加上练习,应该就可以消化了~