Each item in the Android ListView has a different layout

Source: Internet
Author: User

Implementation code

Adapter's Code

Where: Viewholder is three different layouts, namely the layout of each item in the ListView

There are three types of type_1.

In the use of different layouts, getitemviewtype and getviewtype can not be less, generally not the two functions of the overloaded

    classRunrankadapter extends Baseadapter {ArrayListls;        Context Mcontext; LinearLayout LinearLayout=NULL;        Layoutinflater Inflater;        TextView Tex; FinalintView_type =3; FinalintType_1 =0; Finalinttype_2 =1; FinalintType_3 =2;  PublicRunrankadapter (Context context, ArrayListlist) {ls=list; Mcontext=context; } @Override Public intGetCount () {returnls.size (); } @Override PublicObject GetItem (intposition) {            returnLs.Get(position); } @Override Public LongGetitemid (intposition) {            return 0; }        //Each convert view calls this method to get the currently required view style@Override Public intGetitemviewtype (intposition) {            intp =position; if(p = =0)                returntype_1; Else if(p = =1)                returntype_2; Else                returnType_3; } @Override Public intGetviewtypecount () {return 3; } @Override PublicView GetView (intposition, View Convertview, ViewGroup parent) {ViewHolder1 Holder1=NULL; ViewHolder2 Holder2=NULL; ViewHolder3 Holder3=NULL; intType =Getitemviewtype (position); if(Convertview = =NULL) {Inflater= Layoutinflater. from(Mcontext); //determine the layout of new by the current desired style                Switch(type) { CaseType_1:convertview=Inflater.inflate (R.LAYOUT.ITEM_RUNRANK1, parent,false); Holder1=NewViewHolder1 (); Holder1.rank1=(TextView) convertview. Findviewbyid (R.id.tv_list1_rank); Holder1.time1=(TextView) convertview. Findviewbyid (R.id.tv_list1_time);                    Convertview.settag (Holder1);  Break;  CaseType_2:convertview=Inflater.inflate (R.LAYOUT.ITEM_RUNRANK2, parent,false); Holder2=NewViewHolder2 (); Holder2.rank2=(TextView) convertview. Findviewbyid (R.id.tv_list2_rank); Holder2.time2=(TextView) convertview. Findviewbyid (R.id.tv_list2_time);                    Convertview.settag (HOLDER2);  Break;  CaseType_3:convertview=Inflater.inflate (R.layout.item_runrank3, parent,false); Holder3=NewViewHolder3 (); Holder3.rank3=(TextView) convertview. Findviewbyid (R.id.tv_list3_rank); Holder3.time3=(TextView) convertview. Findviewbyid (R.id.tv_list3_time);                    Convertview.settag (HOLDER3);  Break; default:                     Break; }            } Else {                Switch(type) { CaseType_1:holder1=(ViewHolder1) Convertview.gettag ();  Break;  CaseType_2:holder2=(ViewHolder2) Convertview.gettag ();  Break;  CaseType_3:holder3=(ViewHolder3) Convertview.gettag ();  Break; }            }            //Set up Resources            Switch(type) { CaseTYPE_1:holder1.rank1.setText (""+ (position +1)); Holder1.time1.setText (LS.Get(position).Get(" Time"). toString ());  Break;  CaseTYPE_2:holder2.rank2.setText (""+ (position +1)); Holder2.time2.setText (LS.Get(position).Get(" Time"). toString ()); Holder2.totaldistance2.setText (LS.Get(position) Break;  CaseTYPE_3:holder3.rank3.setText (""+ (position +1)); Holder3.time3.setText (LS.Get(position).Get(" Time"). toString ());  Break; }            returnConvertview; }         Public classViewHolder1 {TextView rank1;        TextView time1; }         Public classViewHolder2 {TextView rank2;        TextView time2; }         Public classViewHolder3 {TextView rank3;        TextView Time3; }    }

How to use:

Declare and define your own adapter, set his adapter in the ListView

Private Runrankadapter Runrankadapter;  ArrayList runrank;   New Arraylist();   New Runrankadapter (this, Runrank);   = (ListView) Findviewbyid (R.id.lv_runrank);  Lv_runrank.setadapter (runrankadapter);

Each item in the Android ListView has a different layout

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.