<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## (一).前言: 前面我們已經對于AndroidAnnotations框架集成OrmLite做了講解,今天我們開始具體學習一下使用DI框架在Adapters和lists中的使用方法。 FastDev4Android框架項目地址:[https://github.com/jiangqqlmj/FastDev4Android](https://github.com/jiangqqlmj/FastDev4Android)? ## (二).Apdaters和lists介紹使用: 這邊只是展示一下使用AndroidAnnotations來進行簡單處理Adapter和AdapterView。下面是使用實例: 首先先由一個Person實體類: ~~~ public class Person{ public final String firstName; public final String lastName; public Person(String firstName, StringlastName) { this.firstName = firstName; this.lastName = lastName; } } ~~~ 然后有一個PersoFinder接口: ~~~ public interfacePersonFinder { List<Person> findAll(); } ~~~ 我們現在需要創建一個PersonListActivity來列出所有的人。為了達到這一目的,我們需要一個PersonListAdater適配器來進行綁定數據到view中。并且同時需要PersonItemView,該用來表示列表中每一項item。我們這邊使用的PersonItemView將會有兩個Textview,實例如下: ~~~ @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); } } ~~~ 現在有一個InMemoryPersonFinder實現了PersonFinder接口,該通過@EBean進行注解。適配器直接操作數據并且創建視圖來顯示這些數據; ~~~ @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, ViewconvertView, 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; } } ~~~ 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(); } } ~~~ ## (三).RecyclerView和ViewHolder使用: 如果你使用的是RecyclerView而不是簡單的ListView,那么就要特殊處理了。RecyclerView.Apdater創建ViewHolder而不是view。所以你這邊就不能簡單注入ViewHolder類了,但是你可以使用@EViewGroup來進行注解。 現在創建一個泛型類來把所有類型的View包裝成ViewHondler ~~~ public class ViewWrapper<V extends View> extends RecyclerView.ViewHolder { private V view; public ViewWrapper(V itemView) { super(itemView); view = itemView; } public V getView() { return view; } } ~~~ 為所有的RecyclerView適配器創建一個基類 ~~~ public abstract class RecyclerViewAdapterBase<T, V extends View> extends RecyclerView.Adapter<ViewWrapper<V>> { protected List<T> items = newArrayList<T>(); @Override public int getItemCount() { return items.size(); } @Override public final ViewWrapper<V>onCreateViewHolder(ViewGroup parent, int viewType) { return new ViewWrapper<V>(onCreateItemView(parent, viewType)); } protected abstract VonCreateItemView(ViewGroup parent, int viewType); // additional methods to manipulate theitems } ~~~ 下面就可以開始使用了 ~~~ @EBean public class PersonAdapter extends RecyclerViewAdapterBase<Person, PersonItemView> { @RootContext Context context; @Override protected PersonItemViewonCreateItemView(ViewGroup parent, int viewType) { return PersonItemView_.build(context); } @Override public void onBindViewHolder(ViewWrapper<PersonItemView> viewHolder, int position) { PersonItemView view =viewHolder.getView(); Person person = items.get(position); view.bind(person); } } ~~~ 如果你為綁定方法創建一個接口,那么你可以把onBindViewHondler的實現移到基類中。 到此位置關于AndroidAnnotations最佳實踐Apdaters和lists,RecyclerView,ViewHolder已經全部講解完成了。 同時FastDev4Android項目已經添加配置了AndroidAnnotations框架,后期的框架項目中也會主要使用這個DI框架,.歡迎大家去Github站點進行clone或者下載瀏覽:[https://github.com/jiangqqlmj/FastDev4Android](https://github.com/jiangqqlmj/FastDev4Android)?同時歡迎大家star和fork整個開源快速開發框架項目~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看