AppBase for Android rapid development -- (2). omnipotent Adapter and androidappbase

Source: Internet
Author: User

AppBase for Android rapid development -- (2). omnipotent Adapter and androidappbase
AppBase for Android rapid development -- (2). omnipotent Adapter

The android Adapter is a commonly used component. The custom adapter is basically integrated with BaseAdapter, and a series of methods such as getView are implemented. After a long time, people will inevitably feel that there are too many repetitive code to write, so the omnipotent Adapter will free your hands.
Comparison
  • BaseAdapter
package com.snicesoft.appbase.demo;import java.util.ArrayList;import java.util.List;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class ListBaseAdapter extends BaseAdapter {    List<Data> datas = new ArrayList<ListBaseAdapter.Data>();    public void setDatas(List<Data> datas) {        this.datas = datas;        notifyDataSetChanged();    }    public class Holder {        TextView tvTitle;        ImageView imgIcon;    }    public static class Data {        String title;        int icon;        public Data(String title, int icon) {            super();            this.title = title;            this.icon = icon;        }    }    @Override    public int getCount() {        return datas.size();    }    @Override    public Object getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        Holder holder;        if(convertView == null){            holder = new Holder();            convertView = View.inflate(parent.getContext(), R.layout.item_listdemo, null);            holder.tvTitle = (TextView) convertView.findViewById(R.id.tvTitle);            holder.imgIcon = (ImageView) convertView.findViewById(R.id.imgIcon);            convertView.setTag(holder);        }else{            holder = (Holder) convertView.getTag();        }        holder.tvTitle.setText(datas.get(position).title);        holder.imgIcon.setImageResource(datas.get(position).icon);        return convertView;    }}
  • AvAdapter (universal Adapter)
package com.snicesoft.appbase.demo;import android.content.Context;import android.widget.ImageView;import android.widget.TextView;import com.snicesoft.avlib.annotation.DataBind;import com.snicesoft.avlib.annotation.DataType;import com.snicesoft.avlib.annotation.Id;import com.snicesoft.avlib.annotation.Layout;import com.snicesoft.avlib.rule.IData;import com.snicesoft.avlib.rule.IHolder;import com.snicesoft.avlib.widget.AvAdapter;@Layout(R.layout.item_listdemo)public class ListDemoAdapter extends        AvAdapter<ListDemoAdapter.Holder, ListDemoAdapter.Data> {    public class Holder extends IHolder {        @Id(R.id.tvTitle)        TextView tvTitle;        @Id(R.id.imgIcon)        ImageView imgIcon;        @Override        public void initViewParams() {        }    }    public static class Data extends IData {        @DataBind(id = R.id.tvTitle)        String title;        @DataBind(id = R.id.imgIcon, dataType = DataType.IMG)        int icon;        public Data(String title, int icon) {            super();            this.title = title;            this.icon = icon;        }    }    public ListDemoAdapter(Context context) {        super(context);    }    @Override    public Holder newHolder() {        return new Holder();    }}
  • Conclusion: The getView method and various methods such as findviewbyid and getcout are not required. You only need to know the configuration rules of holder and data for easy use.
Used in Activity
Package com. snicesoft. appbase. demo; import java. util. arrayList; import java. util. list; import android. OS. bundle; import android. widget. button; import android. widget. listView; import android. widget. textView; import com. snicesoft. avlib. annotation. dataBind; import com. snicesoft. avlib. annotation. dataType; import com. snicesoft. avlib. annotation. id; import com. snicesoft. avlib. annotation. layout; import com. snicesoft. avlib. rule. IData; import com. snicesoft. avlib. rule. IHolder; import com. snicesoft. base. baseActivity; @ Layout (R. layout. activity_main) public class MainActivity extends BaseActivity <MainActivity. holder, MainActivity. data> {public class Holder extends IHolder {@ Id (R. id. textView1) TextView textView1; @ Id (R. id. button1) Button button1; @ Id (R. id. listView1) ListView listView1; @ Override public void initViewParams () {}} public class Data extends IData {@ DataBind (id = R. id. textView1) String tv1 = "I am automatically bound TextView"; @ DataBind (id = R. id. button1) String btn1 = "I am the automatically bound Button"; @ DataBind (id = R. id. listView1, dataType = DataType. ADAPTER) // ListBaseAdapter adapter = new ListBaseAdapter (); ListDemoAdapter adapter = new ListDemoAdapter (MainActivity. this) ;}@ Override public Data newData () {return new Data () ;}@ Override public Holder newHolder () {return new Holder ();} @ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); // List <ListBaseAdapter. data> datas = new ArrayList <ListBaseAdapter. data> (); List <ListDemoAdapter. data> datas = new ArrayList <ListDemoAdapter. data> (); for (int I = 1; I <= 10; I ++) {// datas. add (new ListBaseAdapter. data ("title" + I, R. drawable. ic_launcher); datas. add (new ListDemoAdapter. data ("title" + I, R. drawable. ic_launcher);} _ data. adapter. addAll (datas );}}
  • BaseAdapter
Description
  • ListDemoAdapter is generated by the code generator, including the xml file of layout, the entity of Holder and Data.
  • The avlib framework is based on Annotation configuration, which simplifies code and allows developers to pay more attention to the processing of other services. The processing on the UI will become simpler and clearer.
Last

If you have any good ideas, I will continue to optimize the framework.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.