过完暑假就大三了,闲来没事自己看了安卓的书,其中讲到了如何定制listview。
他首先新建类Fruit(显示水果名字及图片为例)包含两个私有的成员变量String name和int imagedID,以及构造函数和两个return私有成员变量的函数。
书中接下来说到:然后需要为ListView的子项制定一个我们自定义的布局,在layout目录下新建fruit_item.xml,代码巴拉巴拉巴拉...
接下来自定义了一个适配器继承自ArrayAdapter,并将泛型指定为Fruit类,新建类FruitAdapter
public class FruitAdapter extends ArrayAdapter<Fruit>{
    private int resourceId;
    public Fruitdapter(Context context,int textViewResourceId,List<Fruit> objects){
        super(centext,textViewResourceId,objects);
        resoureId=textViewResourceId;
        
    }
    public View getView(int position, View convertView, ViewGroup parent){
        Fruit fruit=getItem(position);
        View view=LayoutInflater.from(getContext()).inflate(resourceId,parent,flase);
        ImageView fruitImage=(ImageView) view.findViewById(xxxxxxxx);
        TextView fruitName=xxxxxxxxxxx;
        fruitImage.setImageResource(fruit.getImageId());
        fruitName.setText(fruit.getName());
        return view;
    }
}在这个过程中,是如何将Listview和布局绑定的?难道是在MainActivity中对适配器进行初始化的时候绑定?
小弟有所不懂,希望老哥解答~

解决方案 »

  1.   

    没看过源码,猜测下,FruitAdapter 构造函数第三个参数List<Fruit> objects是所要的数据,所以FruitAdapter可以知道他的长度,也就是说设置之后ListView就知道他所需要布置的子布局的个数,然后遍历子布局,也就是FruitAdapter的getView方法,返回具体的子布局对象,这样的话ListView.setAdapter后就知道了子布局个数,还有每个子布局的View
      

  2.   

    不明白你的意思,是想知道listview的绑定还是listview中item的绑定,若是listview的绑定的话是在载入布局时,item的话是在adapter中的getView方法里
      

  3.   

    路飞路过报道~
    如果你说的是listview如何与item的布局文件绑定,就是通过getview()的View view=LayoutInflater.from(getContext()).inflate(resourceId,parent,flase);方法将布局获取到的
      

  4.   

    Adapter里面的getView中会要求使用 item_layout来创建view, 
    你的这个写法并不标准.http://www.cnblogs.com/zhengbeibei/archive/2013/05/14/3078805.html 这里看标准写法
    public View getView(finalint position, View convertView, ViewGroup parent) {
         ViewHolder holder;      
        if (convertView == null) {
                 convertView = mInflater.inflate(R.layout.item, null); //首次使用,则需要使用item的布局来创建view
                 holder = new ViewHolder();
                /*得到各个控件的对象*/                    
                holder.title = (TextView) convertView.findViewById(R.id.ItemTitle);
                holder.text = (TextView) convertView.findViewById(R.id.ItemText);
                holder.bt = (Button) convertView.findViewById(R.id.ItemButton);
                convertView.setTag(holder);//绑定ViewHolder对象                   
            }
        else{
                holder = (ViewHolder)convertView.getTag();//取出ViewHolder对象   
            }            
            /*设置TextView显示的内容,即我们存放在动态数组中的数据*/             
            holder.title.setText(getDate().get(position).get("ItemTitle").toString());
            holder.text.setText(getDate().get(position).get("ItemText").toString());
        
        return convertView;
    }