編輯:關於Android編程
在實現ListView單選時,我們可以在
Adapter中自己創建一個selectPosition參數,
這樣是能實現需求。
但加入要是再加一個多選
接著又在Adapter中創建了一個記錄選中position的集合,也是可以實現的,但是實現起來還是相關繁瑣的。過程很不樂觀
這裡介紹一種相對簡單的實現方式。
關鍵點,利用ListView中的Choice來實現。
ListView中自帶Choice相關功能,提供單選和多選兩種Choice模式。
我們可以在布局中設置
android:choiceMode = "singleChoice"
同樣也可以在代碼中處理
lv .setChoiceMode(ListView. CHOICE_MODE_MULTIPLE);
對於api很好理解,顧名思義。我們來看一下
比如 getCheckedItemPosition()就是獲取當前選中的位置, 注意只有單選模式此方法才有意義
而多選對應的獲取方法為 getCheckedItemPositions 返回的是一個SparseBooleanArray對象
這個類型相當於map,是一個key為Integer,value為Boolean的鍵值對集合,代表激活item選中位置和狀態數據
有點需要注意的是不代表你10個item獲取到的SparseBooleanArray就一定也是size為10, 他只保存激活的item,
激活是指有過點擊操作有過checked變化的
比如你點擊了兩次第二個item,雖然最後第二個item還是未選中狀態,
但有了操作,集合中就會保存了一個 1=false 的鍵值對數據,代表第二個item當前是未選中,而其他位置的item則不保存
我們來看一下效果圖:
單選:
多選:
我們重點來看
在於ListView的item布局的處理
被選中的item會設置一個checked狀態, 因此這裡需要Item的根布局實現過Checkable可選中接口,自定義CheckableLinearLayout 繼承於LinearLayout
public class CheckableLinearLayout extends LinearLayout implements Checkable { // checked狀態 private static final int[] CHECKED_STATE_SET = { android.R.attr.state_checked }; // 是否選中 private boolean mChecked = false; public CheckableLinearLayout(Context context, AttributeSet attrs) { super(context, attrs); } /** * 判斷是否選中 */ public boolean isChecked() { return mChecked; } /** * 設置選中狀態 */ public void setChecked(boolean b) { if (b != mChecked) { mChecked = b; refreshDrawableState(); } } /** * 切換當前的選中狀態 */ public void toggle() { setChecked(!mChecked); } @Override public int[] onCreateDrawableState(int extraSpace) { // 在原有狀態中添加一個空間space用於保存checked狀態 final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); if (isChecked()) { // 將checked狀態合並到原有的狀態數組中 mergeDrawableStates(drawableState, CHECKED_STATE_SET); } return drawableState; } }
在現有的技術條件下,內存永遠都是一個吃緊的資源,不用說是PC上會出現內存不足的可能,更不必說在移動設備上了。一旦出現內存不足就會導致系統卡頓,影響用戶體驗。而
第一次安裝Java JDK ,要大於1.7版本,不安裝的話就會出現如下提示:這時點擊上面的JDK鏈接,跳轉到甲骨文的JDK下載頁面,根據操作系統,選擇下載版本,如下:下載
想必大家都在android中或多或少的使用過XUtils框架了吧,今天我們通過他來實現一個照片上傳的Demo,希望能夠對大家有幫助,下一篇再從源碼角度來分析下XUtils
我們開發一個APP在上傳應用市場之前,有時候會遇到要根據不同平台打多個apk包的問題。由於Android的應用市場比較多,主流的應用市場就有應用寶,百度手機助手,豌豆莢等