4 VI ListView的封裝支援多種條目

2021-08-29 00:23:53 字數 3770 閱讀 8060

零、前言

[1.]封裝了一晚,總算把多條目的listview封裝了一下

一、使用

1.初始化資料

arraylistmessages = new arraylist<>();

messages.add(new message("你瞅啥?!", "巫纓:", 0));

messages.add(new message("瞅你怎滴!!", "捷特:", 1));

messages.add(new message("2018-8-13", "9:30", 2));

messages.add(new message("你再瞅試試!", "巫纓:", 0));

for (int i = 0; i < 100; i++) else if (i % 3 == 1) else

}

2.使用:
//型別和布局id放在hashmap中

hashmaptypemap = new hashmap<>();

typemap.put(0, r.layout.list_item_left);

typemap.put(1, r.layout.list_item_right);

typemap.put(2, r.layout.list_item_center);

mlv.setadapter(new mylvsadapter(this, messages, typemap)

}});

3.必須有個實體類,且繼承itembean類:保證實體類有type屬性
/**

*/public class message extends itembean

private string value;

private string name;

public string getname()

public void setname(string name)

public string getvalue()

public void setvalue(string value)

}

二、具體封裝類

1.item類:保證實體類有type屬性

/**

*/public class itembean

public int gettype()

public void settype(int type)

}

2.介面卡類
public abstract class mylvsadapterextends baseadapter 

@override

public int getcount()

@override

public t getitem(int position)

@override

public long getitemid(int position)

@override

public view getview(int position, view convertview, viewgroup parent)

/*** 設定資料抽象方法

** @param holder mylvholder

* @param data 資料

* @param position 位置

* @param type

*/public abstract void setdata(mylvsholder holder, t data, int position, int type);

/*** 根據資料來源的position返回需要顯示的的layout的type

** @param position 位置

* @return

*/@override

public int getitemviewtype(int position)

@override

public int getviewtypecount()

}

3.holder類
public class mylvsholder else 

mitemviews.put(i, mitemview);

return;}}

}public listhandlecheckbox(int checkboxid)

cb.setonclicklistener(new view.onclicklistener() else

}});

return mpos;//返回選中的checkbox位置集合

}/**

* 通過viewid獲取控制項

** @param viewid 條目內部控制項的id

* @param 資料泛型

* @return view

*/public t getview(int viewid)

return (t) view;

}public view getconvertview(int type)

public int getposition()

/*** 設定textview文字方法

** @param viewid 條目內部控制項的id

* @param text 文字

* @return mylvholder物件

*/public mylvsholder settext(int viewid, string text)

return this;

}/**

* 通過id設定

** @param viewid 條目內部控制項的id

* @param resid 資源id

* @return mylvholder物件

*/public mylvsholder setimageviewres(int viewid, int resid)

/*** 通過id設定

** @param viewid 條目內部控制項的id

* @param bitmap

* @return mylvholder物件

*/public mylvsholder setimageviewbitmap(int viewid, bitmap bitmap)

}

附錄、布局

1.layout/list_item_center.xml

<?xml version="1.0" encoding="utf-8"?>

2.layout/list_item_left.xml

<?xml version="1.0" encoding="utf-8"?>

3.layout/list_item_right.xml

<?xml version="1.0" encoding="utf-8"?>

4.layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

後記、

1.宣告:

2.連線傳送門:

3.聯絡我

UE4支援WindowsTouch的技術嘗試

目前我使用的版本是ue4.11,還沒有對pc觸控螢幕做技術支援,我看到國內外 上有很多技術人員要求ue公司提供支援,令人可惜的是到目前還沒有支援。估計可能會在4.14版本支援。鑑於我們專案的情況,我有點等不及了。所以較深入的了解了目前這部分的 狀況,發現了些問題,並提供了一部分解決方法,在這裡和大家...

Git的使用 4 分支的概念和使用

在svn中,分支並不是很便於使用。但是在git中,分支就變成了特別好用的功能呢,受到大多數使用者的青睞。分支中有幾個概念 1 分支 分支就是每一次提交建立的點連線成的線。2 master分支 版本庫建立後,會生成乙個預設的分支,這個分支叫主分支,也叫master分支,所有的分支都圍繞這根分支做擴充套...

物件導向的4要素 抽象,封裝,繼承,多型

在平時說到物件導向的特性的時候,一般的答案有幾種。如果是物件導向的3大基本特徵 抽象,繼承,多型 封裝,繼承,多型 如果是4特徵 抽象,封裝,繼承,多型 可見抽象與封裝這兩個概念其實聯絡是很緊密的。而我確實想要搞清楚具體的含義,今天進行乙個總結。其中關於抽象與封裝,以 大全為主要參考。關於多型以c ...