Android開發自定義Listview的Adapter基類以及通用ViewHolder的寫法
簡單的寫一個Adapter基類,不用每次寫adapter都呼叫一堆方法。
import android.widget.BaseAdapter; import java.util.ArrayList; import java.util.List; public abstract class ListBaseAdapter extends BaseAdapter { protected List _data; public ListState listState = ListState.NONE; //這裡是下拉重新整理的狀態碼 public enum ListState { NONE, REFRESHING, LOADMOREING; } public List getData() { return _data == null ? (_data = new ArrayList()) : _data; } @SuppressWarnings("rawtypes") public void setData(List data) { _data = data; notifyDataSetChanged(); } @Override public boolean isEmpty() { if (_data == null) { return true; } else { if (_data.size() == 0) { return true; } else { return false; } } } @Override public int getCount() { if (_data == null) { return 0; } return _data.size(); } @Override public Object getItem(int arg0) { if (_data != null && _data.size() > arg0) { return _data.get(arg0); } return null; } @Override public long getItemId(int arg0) { // TODO 自動生成的方法存根 return arg0; } }
然後再簡單來搞個通用的ViewHolder,省得每次都要寫一堆Viewholder
import android.util.SparseArray; import android.view.View; import android.widget.Adapter; public class ViewHolder { private final SparseArray<View> views; private View convertView; private Adapter adapter; public ViewHolder(View convertView) { this.views = new SparseArray<View>(); this.convertView = convertView; } public <T extends View> T getView(int viewId) { View view = views.get(viewId); if (view == null) { view = convertView.findViewById(viewId); views.put(viewId, view); } return (T) view; } public Adapter getAdapter() { return adapter; } public void setAdapter(Adapter adapter) { this.adapter = adapter; } }
要呼叫的時候,直接在adapter的getview裡呼叫:
ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.listitem_ads, parent, false); holder = new ViewHolder(convertView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); }
View v_view = holder.getView(R.id.v_view);
相關推薦
Android開發自定義Listview的Adapter基類以及通用ViewHolder的寫法
簡單的寫一個Adapter基類,不用每次寫adapter都呼叫一堆方法。 import android.widget.BaseAdapter; import java.util.ArrayList; import java.util.List; public abstra
Android開發自定義控制元件實現一個圓形進度條【帶數值和動畫】
實現一個如下圖所示的自定義控制元件,可以直觀地展示某個球隊在某個賽季的積分數和勝場、負場、平局數 首先對畫布進行區域劃分,整個控制元件分上下兩部分 上邊是個大的圓環,圓環中間兩行文字,沒什麼難度,選好圓心座標和半徑後直接繪製即可,繪製文字也是如此。 下部分是三個小的圓弧進
Android開發自定義控制元件實現一個折線圖
實現一個如下圖所示的折線圖 首先是控制元件繪圖區域的劃分,控制元件左邊取一小部分(控制元件總寬度的八分之一)繪製表頭,右邊剩餘的部分繪製表格 確定表格的行列數,首先繪製一個三行八列的網格,設定好行列的座標後開始繪製 /*繪製三條橫線*/ for(int i=0;i&l
Android開發自定義圓角帶點選效果的Button
public class AnimationButton extends Button { private int mBackGroundColor = Color.parseColor("#ffffff"); private int normalColo
android開發自定義相機映象問題
第一次寫部落格,之前一直是沒有寫部落格的習慣。希望多多支援。 言歸正傳。 最近在做一個專案,需要自定義一個拍照功能。做完後發現,使用前置攝像頭拍照,儲存到本地以後,去相簿檢視發現儲存的是原圖。效果:拍
Android開發自定義控制元件實現一個餅狀圖
實現一個如圖所示的控制元件,包括兩部分,左邊的餅狀圖和中間的兩個小方塊,及右邊的兩行文字 實現起來比較簡單,只是一些繪圖API的呼叫 核心程式碼在onDraw函式裡邊,,對靜態控制元件進行繪製即可 @Override protected void onDraw(Canv
android studio 開發自定義按鍵以及基礎動畫
效果圖: 這次主要記錄如何改變button的形狀。 首先在專案app>res>drawable資料夾右鍵new新建 drawable rescource file,然後為drawable檔案命名即可。 然後在新建的drawable xml檔
移動端Tap實戰技巧總結以及Vue混合開發自定義Tap
最近在忙的專案是Vue的混合開發,因互動相對複雜,所以也踩了很多坑。在此做一下總結。 1.tap事件的實際應用 在使用tap事件時,老生常談的肯定是點透問題,大多情況下,在有滑屏互動的頁面時,我們會在根節點阻止預設行為以解決事件點透的bug。 阻止預設行為有優點,但也會相對帶來一些問題。 優點: (
常用的Java開發自定義工具類UtilsTools
日常開發中經常會遇到一些常用頻繁的資料型別轉換、日期格式轉換、非空校驗、避免重複造輪子寫程式碼一般我們一般會封裝一個常用的Util
如何開發自定義標簽
lin lns abcd tro lib case invoke java類 ext 一、簡介 原理:用戶自定義的 jsp 標記。當一個含有自定義標簽的 jsp 頁面被 jsp 引擎編譯成 servlet 時,tag 標簽被轉化成了對一個標簽處理器類的對象的操作。 標簽庫A
開發自定義Mysql連接池
連接池使用第三方包 https://pypi.python.org/pypi/DBUtils tar -zxvf *.tar.gz * python3 setup.py build && python3 setup.py installimport time import py
Vue 開發自定義插件學習記錄 -- 入門
dem isa 我們 isshowing 人的 暴露 doc directive 了解 首先,你需要了解插件實現的基本原理 插件基本原理: 我們都知道用Vue.use註冊插件,那你知道Vue.use(plugin) 幹了什麽? 以下是我對Vue官網的一些摘錄和個人的
利用 JSP 2 提供的 SimpleTagSupport 開發自定義標籤
自定義標籤庫並不是 JSP 2 才出現的,JSP 1.1 版中已經增加了自定義標籤庫規範,自定義標籤庫是一種非常優秀的表現層元件技術。通過使用自定義標籤庫,可以在簡單的標籤中封裝複雜的功能。 為什麼要使用自定義標籤呢?主要是為了取代醜陋的 JSP 指令碼。在 HTML 頁面中插入 JSP 指令碼有
Vue 開發自定義外掛學習記錄 -- 入門
首先,你需要了解外掛實現的基本原理 外掛基本原理: 我們都知道用Vue.use註冊外掛,那你知道Vue.use(plugin) 幹了什麼? 以下是我對Vue官網的一些摘錄和個人的理解 Vue.use( plu
習題 12.4 寫一個程式,定義抽象基類Shape,由它派生出3個派生類:Circle(圓形)、Rectangle(矩形)、Triangle(三角形),用一個函式printArea分別輸出以上。。。
C++程式設計(第三版) 譚浩強 習題12.4 個人設計 習題 12.4 寫一個程式,定義抽象基類Shape,由它派生出3個派生類:Circle(圓形)、Rectangle(矩形)、Triangle(三
習題 12.5 寫一個程式,定義抽象基類Shape,由它派生出5個派生類:Circle、Square、Rectangle、Tarpezoid、Triangle。用虛擬函式分別計算幾種圖形面積,並求。。。
C++程式設計(第三版) 譚浩強 習題12.5 個人設計 習題 12.5 寫一個程式,定義抽象基類Shape,由它派生出5個派生類:Circle、Square、Rectangle、Tarpezoid、Triangle。用虛擬函式分別計算幾種圖形面積,並求它們的和
Allure報告開發自定義外掛
當報告無法滿足當前專案的需求,需要自定義內容來展示在報告中,即需要開發自己的自定義外掛 最終結果 圖 :demo的結果是新增了一個My Tab 目錄欄,(demo未做有意義資料和css樣式) 1.建立一個外掛專案 基本上外掛專案包含2部分 java
基於flume1.7開發自定義Sink元件-一鍵打包
概要 開始 pom檔案 ide使用idea神器,工程組織使用maven,下面是工程的pom檔案: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.a
如何基於Kubernetes開發自定義的Controller_Kubernetes中文社群
繼上次分享Kubernetes原始碼編譯除錯之後,一直想寫些對scheduler,controller-manager,kubelete等元件的深入介紹,今天先介紹下Controller部分,在kubernetes內部提供了大量的controller,比如node controller,pod
寫一個程式,定義抽象基類Shape,由它派生出3個派生類: Circle(圓形)、Rectangle(矩形)、Triangle(三角形)
寫一個程式,定義抽象基類Shape,由它派生出3個派生類: Circle(圓形)、Rectangle(矩形)、Triangle(三角形),用一個函式printArea分別輸出以上三者的面積,3個圖形的資料在定義物件時給定。 #include<iostream> usi