得到ExpandableListview的滑動(dòng)后的item的view

? ? ? ?這幾天項(xiàng)目有一個(gè)需求是在點(diǎn)擊ExoandableListview的同時(shí)在點(diǎn)擊的group的右上角彈出popupwindow ? ?但是如果點(diǎn)擊了下邊的項(xiàng) ?就會(huì)自動(dòng)滑動(dòng)顯示下邊使可以顯示下邊的child?就會(huì)出現(xiàn)popupwindow顯示在group之前的位置 ? ? 通過(guò)許多嘗試 ?通過(guò)下邊的方法解決了問(wèn)題

考慮的問(wèn)題

1. ?點(diǎn)擊是否導(dǎo)致滑動(dòng)(通過(guò)發(fā)送延時(shí)的message)?

? ? ? ? ? 先執(zhí)行點(diǎn)擊事件 ?再執(zhí)行滑動(dòng)事件

? ? ? ? ?點(diǎn)擊時(shí)記錄點(diǎn)擊狀態(tài) ? 記錄可以獲取view

?2. 點(diǎn)擊導(dǎo)致的滑動(dòng) ?還是手指拖動(dòng)

? ? ? ? ?查看點(diǎn)擊狀態(tài) ? true為點(diǎn)擊滑動(dòng) false為手指拖動(dòng)

? ? ? ? 如果滑動(dòng)了就不可以獲取 ? ?直到滑動(dòng)停止?

private booleanis GroupExpand = false, readytoPopup=false;

private intclickGroupPosition;

private ExpandableListViewexpandableListView;

expandableListView= (ExpandableListView)view.findViewById(R.id.expandableListView);

//只顯示一個(gè)child

expandableListView.setOnGroupExpandListener(

? ? ? ? ? ? ? ? ? ? ? ? ? ?newExpandableListView.OnGroupExpandListener() {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?@Override

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?public voidonGroupExpand(intarg0) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?for(inti =0;i

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(arg0 != i) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?expandableListView.collapseGroup(i);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ? ? ? ? }

});

//監(jiān)聽(tīng)點(diǎn)擊事件? isGroupExpand為true? readytoPopup=true;?

expandableListView.setOnGroupClickListener(

? ? ? newExpandableListView.OnGroupClickListener() {

? ? ? ? ? ? @Override

? ? ? ? ? ? public booleanonGroupClick(ExpandableListView parent,View v, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? intgroupPosition, longid) {

? ? ? ? ? ? ? ? ? ? ?//是否被點(diǎn)擊

? ? ? ? ? ? ? ? ? ? ? isGroupExpand=true;

? ? ? ? ? ? ? ? ? ? ? clickGroupPosition= groupPosition;

? ? ? ? ? ? ? ? ? ? ? //是否可以得到view

? ? ? ? ? ? ? ? ? ? ?readytoPopup=true;

? ? ? ? ? ? ? ? ? ? ? ?//延時(shí)發(fā)送 ? 判斷是否點(diǎn)擊了下邊的group導(dǎo)致自動(dòng)向上滑動(dòng) ?沒(méi)滑動(dòng)直接獲取 ??

? ? ? ? ? ? ? ? ? ? ? ? //? ? 滑動(dòng)的話? 設(shè)置readytoPopup=false ?

? ? ? ? ? ? ? ? ? ? ? handler.sendMessageDelayed(handler.obtainMessage(0,v),200);

? ? ? ? ? ? ? ? ? ? return false;

? ? ? ? ? ? ? ?}

});

expandableListView.setOnScrollListener(newAbsListView.OnScrollListener() {

? ? ? @Override

? ? ? public voidonScrollStateChanged(AbsListView view, intscrollState) {

? ? ? ? ? ? ?//點(diǎn)擊下邊的group導(dǎo)致滑動(dòng) ?

? ? ? ? ? ?if(isGroupExpand) {

? ? ? ? ? ? ? ? ?//點(diǎn)擊后判斷是否滑動(dòng)停止? 停止的話 可以獲取 否則不可以再發(fā)送

? ? ? ? ? ? ? ? ? //SCROLL_STATE_IDLE ? 表示滑動(dòng)停止 ?

? ? ? ? ? ? ? ? ?if(scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? //滑動(dòng)停止 ?可以獲取

? ? ? ? ? ? ? ? ? ? ? ? ? ? readytoPopup=true;

? ? ? ? ? ? ? ? ? ? ? ? ? ? handler.sendMessageDelayed(handler.obtainMessage(0,view),0);

? ? ? ? ? ? ? ? ?}else{

? ? ? ? ? ? ? ? ? ? ? //滑動(dòng)沒(méi)有停止 ?不可以獲取

? ? ? ? ? ? ? ? ? ? ?readytoPopup=false;

? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ? ? //沒(méi)點(diǎn)擊? 只滑動(dòng) ? 關(guān)閉打開(kāi)的child

? ? ? ? ? ? ? ? ? ? ? expandableListView.collapseGroup(clickGroupPosition);

? ? ? ? ? ? ?}

}

@Override

public voidonScroll(AbsListView view, intfirstVisibleItem, intvisibleItemCount, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?inttotalItemCount) {

? ? ? ? ? ? ? ? ? }

});

privateHandlerhandler=newHandler() {

? ? ? ? ? ? public voidhandleMessage(android.os.Message msg) {

? ? ? ? ? ? ? ? ? ? switch(msg.what) {

? ? ? ? ? ? ? ? ? ? ? ? //判斷是否可以打開(kāi)

? ? ? ? ? ? ? ? ? ? ? ?case ? 0:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(readytoPopup) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?if(popupWindow!=null) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? itemView ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?=getViewByPosition(clickGroupPosition,expandableListView);

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? readytoPopup=false;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? isGroupExpand=false;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? ? ? ? ? ? ?default:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break;

? ? ? ? ? ? ? }

? ? ? }

};

/**

* 通過(guò)pos的到item的view

*@param pos

*@param listView

*@return

*/

publicViewgetViewByPosition(int pos,ExpandableListView listView) {

? ? ? ? ? ? final intfirstListItemPosition = listView.getFirstVisiblePosition();

? ? ? ? ? ? final intlastListItemPosition = firstListItemPosition + listView.getChildCount() -1;

? ? ? ? ? ? if(pos < firstListItemPosition || pos > lastListItemPosition) {

? ? ? ? ? ? ? ? ? ?returnlistView.getAdapter().getView(pos, null,listView);

? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? ?final intchildIndex = pos - firstListItemPosition;

? ? ? ? ? ? ? ? ? returnlistView.getChildAt(childIndex);

? ? ? ? ? ? }

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌右钾,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偎肃,死亡現(xiàn)場(chǎng)離奇詭異稽屏,居然都是意外死亡卵贱,警方通過(guò)查閱死者的電腦和手機(jī)驮俗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門懂缕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人王凑,你說(shuō)我怎么就攤上這事搪柑。” “怎么了索烹?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵工碾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我术荤,道長(zhǎng)倚喂,這世上最難降的妖魔是什么每篷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任瓣戚,我火速辦了婚禮端圈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘子库。我一直安慰自己舱权,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布仑嗅。 她就那樣靜靜地躺著宴倍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪仓技。 梳的紋絲不亂的頭發(fā)上鸵贬,一...
    開(kāi)封第一講書(shū)人閱讀 52,807評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音脖捻,去河邊找鬼阔逼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛地沮,可吹牛的內(nèi)容都是我干的嗜浮。 我是一名探鬼主播,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摩疑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼危融!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起雷袋,我...
    開(kāi)封第一講書(shū)人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤吉殃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后片排,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體寨腔,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年率寡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迫卢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冶共,死狀恐怖乾蛤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捅僵,我是刑警寧澤家卖,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站庙楚,受9級(jí)特大地震影響上荡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一酪捡、第九天 我趴在偏房一處隱蔽的房頂上張望叁征。 院中可真熱鬧,春花似錦逛薇、人聲如沸捺疼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)啤呼。三九已至,卻和暖如春呢袱,著一層夾襖步出監(jiān)牢的瞬間官扣,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工羞福, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留醇锚,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓坯临,卻偏偏與公主長(zhǎng)得像焊唬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子看靠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,336評(píng)論 25 707
  • 說(shuō)到下拉刷新控件赶促,網(wǎng)上版本有很多,很多軟件也都有下拉刷新功能挟炬。有一個(gè)叫XListView的鸥滨,我看別人用過(guò),沒(méi)看過(guò)是...
    AiPuff閱讀 3,433評(píng)論 3 43
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程谤祖,因...
    小菜c閱讀 6,451評(píng)論 0 17
  • 參照Gulp for Beginners來(lái)學(xué)習(xí)Gulp基本內(nèi)容婿滓。以下為學(xué)習(xí)記錄筆記。 安裝Gulp 首先需要安裝N...
    JenniferYe閱讀 2,546評(píng)論 1 17
  • 堅(jiān)持努力并不是成功的關(guān)鍵粥喜,其中還要有一個(gè)前提(要朝著對(duì)自己來(lái)說(shuō)對(duì)的方向凸主,然后再用對(duì)的方法)。要學(xué)會(huì)適當(dāng)?shù)穆?tīng)聽(tīng)前輩的...
    郭公子Wawa閱讀 191評(píng)論 0 0