真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中怎么實(shí)現(xiàn)ListView多選模式-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)Android中怎么實(shí)現(xiàn) ListView多選模式,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都創(chuàng)新互聯(lián)公司長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為方正企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè),方正網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。

ListView使用多選模式好處

交互與數(shù)據(jù)分離,在多選狀態(tài)下不需要修改數(shù)據(jù)源,在最后確定的時(shí)候獲取選擇索引來(lái)確定選擇的數(shù)據(jù)。

ListView模式

  • CHOICE_MODE_NONE:普通模式;

  • CHOICE_MODE_SINGLE:?jiǎn)芜x模式;

  • CHOICE_MODE_MULTIPLE:多選模式;

  • CHOICE_MODE_MULTIPLE_MODAL:多選模式(與ActionMode配合使用)。

CHOICE_MODE_MULTIPLECHOICE_MODE_MULTIPLE_MODAL 區(qū)別:
前者能夠同時(shí)響應(yīng)ListView Item點(diǎn)擊事件,與Item選擇事件
后者在未進(jìn)入ActionMode模式下響應(yīng)Item點(diǎn)擊事件,不響應(yīng)Item選擇事件。在進(jìn)入ActionMode模式后不響應(yīng)Item點(diǎn)擊事件,響應(yīng)Item選擇事件。
同時(shí)后者如果Item長(zhǎng)按能夠自動(dòng)進(jìn)入ActionMode模式(也可以使用 ListView.setItemChecked(0,true)來(lái)選擇一項(xiàng)Item進(jìn)入ActionMode模式),當(dāng)所有Item全部取消選擇后,自動(dòng)退出ActionMode模式。
CHOICE_MODE_MULTIPLE_MODAL使用方式:

listView = (ListView) findViewById(R.id.list_view);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new ListView.MultiChoiceModeListener());

設(shè)置方式

  1. XML布局文件設(shè)置(多選模式設(shè)置):

  2. 代碼設(shè)置:
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

選擇

ListView多選狀態(tài)是記錄到ListView控件中,由其父類AbsListView實(shí)現(xiàn)。
列表Item最外層需要實(shí)現(xiàn)Checkable接口,比如CheckBox、CheckedTextView等控件。
如果需要使用容器類控件比如LinearLayout,可以重寫(xiě)控件,實(shí)現(xiàn)Checkable接口。
比如:

public class CheckableLinearLayout extends LinearLayout implements Checkable {

    private boolean mChecked = false;

    public CheckableLinearLayout(Context context) {
        super(context);
    }

    public CheckableLinearLayout(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public CheckableLinearLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    public void toggle() {
        setChecked(!mChecked);
    }

    @Override
    public boolean isChecked() {
        return mChecked;
    }

    @Override
    public void setChecked(boolean checked) {
        if (mChecked != checked) {
            mChecked = checked;
            refreshDrawableState();
            for (int i = 0, len = getChildCount(); i < len; i++) {
                View child = getChildAt(i);
                if(child instanceof Checkable){
                    ((Checkable) child).setChecked(checked);
                }
            }
        }
    }

}

獲取選擇數(shù)據(jù)

獲取到最終選擇結(jié)果為選中項(xiàng)索引集合,是一個(gè)SparseBooleanArray,記錄了操作過(guò)的item選擇狀態(tài)(如果選中item再取消同樣會(huì)記錄,狀態(tài)為false)。
SparseBooleanArray checkedItemPositions = listView.getCheckedItemPositions();

API

// 清除選中
public void clearChoices();
// 根據(jù)索引判斷是否選中
public boolean isItemChecked(int position);
// 獲取選中數(shù)量
public int getCheckedItemCount();
// 根據(jù)索引設(shè)置選中狀態(tài)
public void setItemChecked(int position, boolean value);

注意

  • 如果ListView Item內(nèi)有按鈕會(huì)搶Item點(diǎn)擊事件,解決方法為在Item根布局增加
    android:descendantFocusability="blocksDescendants"

  • ActionMode監(jiān)聽(tīng)回調(diào)有兩種ActionMode.CallbackMultiChoiceModeListener,后者繼承自前者,并新增一個(gè)item選擇與取消選擇的回調(diào)方法,但是此方法只在CHOICE_MODE_MULTIPLE_MODAL模式下有效,所以MultiChoiceModeListener監(jiān)聽(tīng)只適用于CHOICE_MODE_MULTIPLE_MODAL模式。

  • ListView如果使用CHOICE_MODE_MULTIPLE_MODAL模式,可以自動(dòng)進(jìn)入ActionMode模式,使用setMultiChoiceModeListener(MultiChoiceModeListener listener)設(shè)置監(jiān)聽(tīng)回調(diào)。

上述就是小編為大家分享的Android中怎么實(shí)現(xiàn) ListView多選模式了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享題目:Android中怎么實(shí)現(xiàn)ListView多選模式-創(chuàng)新互聯(lián)
標(biāo)題來(lái)源:http://weahome.cn/article/dccodj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部