AndroidAnnotations——Adapters and lists 适配器和列表
2013-12-13 16:13
423 查看
Adapters and lists
This is just a simple demonstration of how you could handleAdaptersand
AdapterViewsin
a simple way with AndroidAnnotations.
这是一个使用AndroidAnnotations处理
Adapters和
AdapterViews的简单示例
Let's say you have a
Personclass:
让我们假设你有这么一个
Person类:
public class Person { public final String firstName; public final String lastName; public Person(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } }
and a
PersonFinderinterface:
和一个
PersonFinder接口:
public interface PersonFinder { List<Person> findAll(); }
We want to create a
PersonListActivitythat
lists all the available persons. For that, we'll need a
PersonListAdapterthat
binds the data to the views, and a
PersonItemViewthat
is the view for one item in the list.
我们想创建
PersonListActivity来列出所有有效人员。因此,我们需要一个
PersonListAdapter来绑定数据到视图上,
PersonItemView是列表项的视图。
The
PersonItemViewwill use
one
TextViewfor the first name, and one
TextViewfor
the last name:
PersonItemView将使用一个
TextView显示first
name,另一个
TextView显示last
name:
@EViewGroup(R.layout.person_item) public class PersonItemView extends LinearLayout { @ViewById TextView firstNameView; @ViewById TextView lastNameView; public PersonItemView(Context context) { super(context); } public void bind(Person person) { firstNameView.setText(person.firstName); lastNameView.setText(person.lastName); } }
Notice that creating a custom view group that has its child views injected removes the need to use a View
Holder Pattern.
请注意,创建一个有子视图注入的自定义视图组不需要使用View Holder Pattern。
There's a
PersonFinderimplementation,
let's say
InMemoryPersonFinder, that is annotated with
@EBean.
We won't describe this implementation.
InMemoryPersonFinder是
PersonFinder的实现类,用
@EBean注解。我们不再描述这个实现类。
The adapter directly manipulates it to bind its data and create the corresponding views:
适配器直接操作实现类,并绑定数据,创建相应的视图:
@EBean public class PersonListAdapter extends BaseAdapter { List<Person> persons; @Bean(InMemoryPersonFinder.class) PersonFinder personFinder; @RootContext Context context; @AfterInject void initAdapter() { persons = personFinder.findAll(); } @Override public View getView(int position, View convertView, ViewGroup parent) { PersonItemView personItemView; if (convertView == null) { personItemView = PersonItemView_.build(context); } else { personItemView = (PersonItemView) convertView; } personItemView.bind(getItem(position)); return personItemView; } @Override public int getCount() { return persons.size(); } @Override public Person getItem(int position) { return persons.get(position); } @Override public long getItemId(int position) { return position; } }
The
PersonListActivitybinds the
PersonListAdapterto
a
ListView, and displays a toast when a
PersonItemViewis
clicked.
PersonListActivity绑定
PersonListAdapter到一个
ListView视图上,当视图项PersonItemView被单击时,显示一句toast。
@EActivity(R.layout.person_list) public class PersonListActivity extends Activity { @ViewById ListView personList; @Bean PersonListAdapter adapter; @AfterViews void bindAdapter() { personList.setAdapter(adapter); } @ItemClick void personListItemClicked(Person person) { makeText(this, person.firstName + " " + person.lastName, LENGTH_SHORT).show(); } }
本文档的简单示例下载
相关文章推荐
- AndroidAnnotations——Adapters and lists 适配器和列表
- Android Material Design-Creating Lists and Cards(创建列表和卡片)-(三)
- Android Material Design-Creating Lists and Cards(创建列表和卡片)-(三)
- Android Material Design-Creating Lists and Cards(创建列表和卡)-(三)
- Android学习之listView显示下拉列表(2)(SimpleAdapter适配器)
- AndrowListView实现(自定义游戏列表)防止屏幕闪烁,设置分割线android中不推荐的方法,要考虑向下兼容,用了推荐的新方法,可能不兼容旧版本系统的手机
- Android应用--简、美音乐播放器获取专辑图片(自定义列表适配器)
- AndroidAnnotations——BackgroundTasksAndActivityBinding后台任务和activity绑定
- android自定义适配器——listView中显示(显示下拉列表)
- AndroidAnnotations——BackgroundTasksAndActivityBinding后台任务和activity绑定
- Android控件之列表视图ListView与适配器用法
- 跟我学Android之十一 列表和适配器
- 【FastDev4Android框架开发】AndroidAnnnotations注入框架使用之最佳实践之Adapters和lists(十六)
- Android视频播放项目总结之 适配器绑定视频信息列表显示到界面(适配器简单优化)
- 跟我学Android之十一 列表和适配器
- Android控件之列表视图ListView与适配器用法
- [转]Use PowerShell to Manage Lists, Views, and Items in SharePoint(使用PowerShell管理列表、视图、列表项)
- 跟我学Android之十一 列表和适配器
- AndroidAnnotations——Listening to AdapterViewEvents监听适配器视图事件
- Android——适配器其他组件(AutoCompleteTextView:自动完成文本编辑框;Spinner:下拉列表)