安卓開發:listview長按進入多選刪除操作
在實際開發中有好多多選刪除的使用場景,我們現在遇到的是,listview 裡邊是一個 BaseAdapter 出來的列表
簡單分析下,大概是需要這樣操作,首先 listview的 item項裡要有一個 多選框 這個多選框 預設是隱藏的。
一般情況下 點選是要進入詳情頁面。然後長按的話進入多選刪除操作。所以我們這裡要設定兩個事件 分別為:
OnClickListener 和 OnLongClickListener
先看下佈局檔案中 設定了 checkBox 不可以被點選 以及隱藏 ,同時我還 設定了一個全域性變數。去判斷此時是否處雨多選狀態。
以及全域性設定了一個 map 。map 中儲存了 每個項的id 以及選中狀態。 這樣在呼叫 Adapter的getView 方法時候可以去去根據多選
狀態 以及 是否選中 去進行 選中操作
OnLongClickListener 事件 點選後進入操作狀態。設定 CheckBox 顯示 設定全域性變數為多選狀態
OnClickListener 根據多選狀態 做操作
<CheckBox
android:id="@+id/cb_select"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"
android:layout_gravity="center"
android:clickable="false"
/>
class Videoad extends BaseAdapter {
@Override
public int getCount() {
return videosList.size();
}
@Override
public Object getItem(int i) {
return i;
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
// 1.解析佈局檔案 成為VIEW
LayoutInflater inflater = LayoutInflater.from(getActivity());
View view1 = inflater.inflate(R.layout.my_videocollect_item, viewGroup, false);
//2.填充資料
CheckBox cb_select = view1.findViewById(R.id.cb_select);
if(isselect){
cb_select.setVisibility(View.VISIBLE);
if(deletemap.get(cid+"")){
cb_select.setChecked(true);
}else{
cb_select.setChecked(false);
}
}
LinearLayout video_item = view1.findViewById(R.id.video_item);
final int vid = videosList.get(i).getId();
video_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(isselect){
boolean isseelctitem = deletemap.get(""+cid);
if(isseelctitem ){
deletemap.put(""+cid,false);
}else{
deletemap.put(""+cid,true);
}
videoad.notifyDataSetChanged();
}else{
Intent intent = new Intent(getActivity().getApplicationContext(),Videodetail.class);
intent.putExtra("id", vid);
startActivity(intent);
}
}
});
video_item.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
isselect = true;
deleteall.setVisibility(View.VISIBLE);
videoad.notifyDataSetChanged();
return false;
}
});
return view1;
}
}
相關文章
- 安卓開發——ListView控制元件(初始化ListView、列表重新整理、長按新增menu)安卓View控制元件
- 搭建直播平臺,Android ListView 長按刪除列表項AndroidView
- 短視訊app開發,左滑刪除或長按彈出刪除選擇框APP
- iOS 多選刪除(附tableViewTips及單選刪除)iOSView
- 點選刪除按鈕彈出是否刪除提示框
- jQuery點選按鈕刪除div元素jQuery
- RecyclerView 梳理:點選&長按事件、分割線、拖曳排序、滑動刪除View事件排序
- kindeditor 圖片管理增加刪除操作按鈕
- 安卓開發學習-按鈕控制元件安卓控制元件
- 小程式實現長按刪除圖片
- 安卓開發:安卓底部選單欄的實現,RadioGroup 和Fragment安卓Fragment
- 安卓開發入門(一)開發環境搭建安卓開發環境
- 原生js多選框選中排序及刪除JS排序
- 刪除按鈕點選後的虛線輪廓
- 短視訊系統,長按側滑實現刪除的按鈕
- 直播商城平臺,購物車長按右滑出現刪除按鈕
- 安卓開發 點選空白處收起鍵盤安卓
- 開發者選項-顯示點按操作反饋
- 使用uniapp開發APP時的除錯/安卓打包等APP除錯安卓
- win10刪除多餘啟動項怎麼操作 win10如何刪除多餘的開機啟動項Win10
- 短視訊app製作,實現訊息列表的左滑刪除或長按刪除APP
- 嵌入式安卓開發使用LLDB進行斷點除錯C/C++程式碼安卓LLDB斷點除錯C++
- win10怎麼刪除右鍵多餘選項 win10刪除右鍵多餘選項的方法Win10
- Laravel 軟刪除操作Laravel
- 單選多選按鈕
- Docker批量操作(啟停、刪除、歸檔、載入)Docker
- 安卓開發--AIDL研究安卓AI
- Kotlin 入門開發__安卓小專案實戰Kotlin安卓
- MIT App Inventor安卓圖形化開發入門MITAPP安卓
- win10刪除輸入法在哪裡 win10刪除多餘的輸入法Win10
- 安卓真機除錯安卓除錯
- mySql刪除多個表 刪除多個欄位的SQLMySql
- 安卓開發框架系列開篇安卓框架
- 後端工程師入門安卓開發筆記(一)後端工程師安卓筆記
- Python可以開發IOS或安卓APP嗎?Python入門!PythoniOS安卓APP
- 安卓開發日記4安卓
- go語言安卓開發Go安卓
- 安卓開發日記28安卓