Listview的基础使用

来源:互联网 发布:大学生体育锻炼数据 编辑:程序博客网 时间:2024/06/05 13:33

参照《第一行代码》上的教学案列,按照流程把代码写了一遍。
一:在布局中添加Listview
二:创建实体类Fruit,实例变量为String name;int imageId;
三:创建item布局,包含一个ImageView,一个TextView
四:创建自己的Adapter继承自ArrayAdapter,泛型为Fruit
代码:

public class FruitAdapter extends ArrayAdapter<Fruit> {    private int resouceId;    private List<Fruit> data;    public FruitAdapter(Context context, int resource, List<Fruit> data) {        super(context, resource, data);        resouceId = resource;        this.data = data;    }    public void add(Fruit fruit) {        if (data != null) {            data.add(fruit);            notifyDataSetChanged();        }    }    @NonNull    @Override    public View getView(int position, View convertView, ViewGroup parent) {        Fruit fruit = getItem(position);        View view;        ViewHolder holder;        if (convertView != null) {            view = convertView;            holder = (ViewHolder) convertView.getTag();        } else {            view = LayoutInflater.from(getContext()).inflate(resouceId, null);            holder = new ViewHolder();            holder.ima = (ImageView) view.findViewById(R.id.img);            holder.name = (TextView) view.findViewById(R.id.title);            view.setTag(holder);        }        holder.ima.setImageResource(fruit.getImageId());        holder.name.setText(fruit.getName());        return view;    }    class ViewHolder {        ImageView ima;        TextView name;    }

在Listview绑定Adapter是getview()方法会多次调用,其中的getitem()获得实体类的方法内部实现

private List<T> mObjects;... ...  @Override    public @Nullable T getItem(int position) {        return mObjects.get(position);    }

其实只是传入的list.get(position);
五:在Activity中使用Adapter,主要代码

FruitAdapter adapter = new FruitAdapter(this, R.layout.item_my, fruitList);        listView.setAdapter(adapter);

点击事件

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                Fruit fruit = fruitList.get(position);                Toast.makeText(ListviewActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show();            }        });

动态的添加listview展示数据的条数,通过FruitAdapter中的add()方法

public void add(Fruit fruit) {        if (data != null) {            data.add(fruit);            notifyDataSetChanged();        }    }

在需要的地方调用

 Fruit fruit = new Fruit("1111", R.mipmap.ic_launcher);                adapter.add(fruit);
0 0
原创粉丝点击