ListView之BaseAdapter

ListView虽然被RecyclerView替代了,但是ListView作为最常用的控件之一,还是很有必要学习的,咱们来学习一下ListView使用BaseAdapter

自定义BaseAdapter,绑定到ListView

礼貌性的给一下效果图。

截屏

emmm,一个很简单的ListView
大致为:

  1. 主布局添加ListView控件
  2. 新建item布局并写布局
  3. 绑定adapterlistview添加数据然后刷新

ListView绑定adapter用setAdapter()方法。
数据更新用adapter的notifyDataSetChanged()方法。
下面贴下关键代码:
ModelData.java


public class ModelData {
    String name;
    String price;
    int icon;
    public ModelData (String name, String price, int icon){
        this.name = name;
        this.price = price;
        this.icon = icon;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public int getIcon() {
        return icon;
    }

    public void setIcon(int icon) {
        this.icon = icon;
    }
}

自定义的BaseAdapter: ListAdapter.java

public class ListAdapter extends BaseAdapter {
    private Context mContext;
    private List<ModelData> list = new ArrayList<>();
    public ListAdapter(Context context, List<ModelData> list){
        this.mContext = context;
        this.list = list;
    }
    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView == null){
            convertView = LayoutInflater.from(mContext).inflate(R.layout.list_item,null);
            holder = new ViewHolder();
            holder.name = convertView.findViewById(R.id.tv1);
            holder.price = convertView.findViewById(R.id.tv2);
            holder.icon = convertView.findViewById(R.id.icon);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder) convertView.getTag();
        }
        holder.name.setText(list.get(position).getName());
        holder.price.setText(list.get(position).getPrice());
        holder.icon.setImageResource(list.get(position).icon);
        return convertView;
    }
    //ViewHolder
    class ViewHolder{
        TextView name;
        TextView price;
        ImageView icon;
    }
}

MainActivity.java


public class MainActivity extends AppCompatActivity {

    private ListView listview;
    private List<ModelData> list = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        listview  = findViewById(R.id.listview);
        ListAdapter adapter = new ListAdapter(this,list);
        listview.setAdapter(adapter);
        //由于没图片所以用一下启动图标。。。
        list.add(new ModelData("小米8 青春版","1399",R.mipmap.ic_launcher));
        list.add(new ModelData("红米6A","549",R.mipmap.ic_launcher));
        list.add(new ModelData("小米MIX 2","2699",R.mipmap.ic_launcher));
        list.add(new ModelData("小米平板4","1899",R.mipmap.ic_launcher));
        list.add(new ModelData("笔记本15.6","3899",R.mipmap.ic_launcher));
        adapter.notifyDataSetChanged();
    }
}

结束了,没错ListView自定义BaseAdapter以及数据绑定就这么简单。
至于源码,emmm,这么简单还需要拿???

发布了13 篇原创文章 · 获赞 24 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/sinat_28502161/article/details/82783887
今日推荐