ArrayAdapter,SimpleAdapter,BaseAdapter
2016-02-23 13:24
369 查看
自从放寒假,以及过年期间,一直没有好好的敲代码,也没有好好的看书,导致现在已经对原来学的东西忘记的太严重了,深深地感觉到脑子不够用了,决定重温下原来的基础。 先总结下几个简单的适配器,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.
相关文章推荐
- C#多线程学习(四) 多线程的自动管理(线程池)
- 第三届_求解算式
- AFN 设置请求数据类型
- js简单函数运用
- 【Android】12.5 利用Intent读取和更新通讯录
- $str_2 = "str_1 : ${str_1}2 <br>"; //引用的变量名后,多了个字符2 即$str_12
- HMM:隐马尔科夫模型 - 学习
- HMM:隐马尔科夫模型-前向算法
- Cocos2d-x 3.x瓦片地图
- 如何生成KeyStore
- oracle的参数优化
- linux并行集群的搭建
- C#多线程学习(三) 生产者和消费者
- 标准IO库 知识点百问《APUE》 chapter-5
- java源码级注解处理+字节码级注解处理
- C#多线程学习(二) 如何操纵一个线程
- Java 生成唯一性标识解决方案与重复概率分析
- StatusTimeUtils
- Intent下的FLAG几种属性和启动模式详解
- Android源码分析-深入理解setContentView方法