ArrayAdapter,SimpleAdapter,BaseAdapter

来源:互联网 发布:windows pe镜像下载 编辑:程序博客网 时间:2024/06/05 06:45
自从放寒假,以及过年期间,一直没有好好的敲代码,也没有好好的看书,导致现在已经对原来学的东西忘记的太严重了,深深地感觉到脑子不够用了,决定重温下原来的基础。先总结下几个简单的适配器,ArrayAdapter,SimpleAdapter,BaseAdapter的用法。1 ArrayAdapter数组适配器,这是最简单的适配器,基本上是用于只显示文本。
public class ArrayListDemo extends Activity {    private ListView listView;    private List<String> datas;    private ArrayAdapter<String> adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_arraylist);        listView = (ListView) findViewById(R.id.listview);        getDatas();        adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, datas);        listView.setAdapter(adapter);    }    public List<String> getDatas() {        datas = new ArrayList<>();        for (int i = 0; i < 20; i++) {            datas.add("item" + i);        }        return datas;    }}

效果

2 SimpleAdapter虽然说这个叫做SimpleAdapter, 但是却不是很简单的,可以比ArrayAdapter有更广泛的作用,可用于显示图片与文本组合的较复杂的列表。

public class MainActivity extends AppCompatActivity {    private ListView listView;    private SimpleAdapter adapter;    private List<Map<String, Object>> data;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView = (ListView) findViewById(R.id.listview);        data = new ArrayList<>();        for (int i = 0; i < 20; i++) {            Map<String, Object> map = new HashMap<>();            map.put("pic", R.mipmap.ic_launcher);            map.put("string", "数据"+i);            data.add(map);        }        adapter = new SimpleAdapter(this, data, R.layout.simple_item, new String[]{"pic", "string"}, new int[]{R.id.image, R.id.text});        listView.setAdapter(adapter);    }}

这里写图片描述

3 BaseAdapter 这个相对来说。就有更加广泛的用途了,能用于更加复杂的列表。
public class TestBaseAdapter extends Activity {    private ListView listView;    private MyBaseAdapter adapter;    private List<ItemBean> beans;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.listview_baseadapter);        listView = (ListView) findViewById(R.id.listview);        getData();        adapter = new MyBaseAdapter(this, beans);        listView.setAdapter(adapter);    }    private void getData() {        beans = new ArrayList<>();        for (int i = 0; i < 20; i++) {            beans.add(new ItemBean(R.mipmap.ic_launcher, "title" + i, "content" + i));        }    }}

ItemBean 存储列表项的数据Bean

public class ItemBean {    private int imageResIdId;    private String mTitle;    private String mContext;    public ItemBean(int imageResIdId, String mTitle, String mContext) {        this.imageResIdId = imageResIdId;        this.mTitle = mTitle;        this.mContext = mContext;    }    public int getImageResIdId() {        return imageResIdId;    }    public void setImageResIdId(int imageResIdId) {        this.imageResIdId = imageResIdId;    }    public String getmTitle() {        return mTitle;    }    public void setmTitle(String mTitle) {        this.mTitle = mTitle;    }    public String getmContext() {        return mContext;    }    public void setmContext(String mContext) {        this.mContext = mContext;    }}

Base适配器

public class MyBaseAdapter extends BaseAdapter {    private List<ItemBean> data;    private LayoutInflater inflater;    public MyBaseAdapter(Context context, List<ItemBean> mdata) {        data = mdata;        inflater = LayoutInflater.from(context);    }    @Override    public int getCount() {        return data.size();    }    @Override    public Object getItem(int position) {        return data.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewHolder;        if (convertView == null) {            viewHolder = new ViewHolder();            convertView = inflater.inflate(R.layout.item, null);            viewHolder.imageView = (ImageView) convertView.findViewById(R.id.image);            viewHolder.title = (TextView) convertView.findViewById(R.id.title);            viewHolder.content = (TextView) convertView.findViewById(R.id.content);            convertView.setTag(viewHolder);        } else {            viewHolder = (ViewHolder) convertView.getTag();        }        viewHolder.imageView.setImageResource(data.get(position).getImageResIdId());        viewHolder.title.setText(data.get(position).getmTitle());        viewHolder.content.setText(data.get(position).getmContext());        return convertView;    }    class ViewHolder {        private ImageView imageView;        private TextView title;        private TextView content;    }}

效果
这里写图片描述

总结:基本上只显示文本的用ArrayAdapter比较简单些 ,再稍微复杂的有显示图片的可以用SimpleAdapter。基本上BaseAdapter是万能的,但是因为写适配器比较麻烦一些。所以,很贱的列表优先考虑ArrayAdapter和SimpleAdapter.
0 0
原创粉丝点击