ListView中item點擊事件、item保持選中狀態(tài)以及其他細節(jié)

ListView獲取Item點擊事件
ListVIew子控件中包含button之類的控件艇纺,需要設置該button的Android:focusable="false"屬性怎静,或者Listview-item的根節(jié)點設置android:descendantFocusability="blocksDescendants"屬性,如果子控件設置了android:focusable="false"屬性黔衡,父控件就不用設置了蚓聘,否則有可能使得Item點擊事件失效。
ListVIew中添加分類item盟劫,如果為分類名稱夜牡,則點擊不進行相關操作,adapter****重寫isEnabled方法即可侣签,設置相應的返回值
@Override
public boolean isEnabled(int position) {
return getItemViewType(position) != VIEW_TYPE_CATEGORY;
}
LiteView中item保持選中狀態(tài)
一般情況下塘装,item一旦失去焦點就會恢復原狀態(tài),保持item的選中狀態(tài)影所,也就是說當點擊某一Item時蹦肴,顯示其他控件(失去焦點),返回時該item仍然處于選中狀態(tài)猴娩,點擊其他item時才恢復原狀態(tài)阴幌。
實現(xiàn)方式:
定義變量,記錄前一次選中的item胀溺,當再次點擊Item時裂七,將上次view的BackGround清空,保存當前狀態(tài)仓坞。代碼如下:

View oldView = **null**;
       @Override
       **protected void**onCreate(Bundle savedInstanceState) {
              **super**.onCreate(savedInstanceState);
              setContentView(R.layout.*example*);
              listview.setAdapter(actionsAdapter);
              listview.setOnItemClickListener(**new**AdapterView.OnItemClickListener() {
                     @Override
              **public void**onItemClick(AdapterView<?> adapter, View v, **int** position, **long** flags) {
                            **if**(oldView!=**null**){
                                   oldView.setBackgroundResource(0);
                            }
                                   oldView = v;
                            v.setBackgroundResource(R.drawable.*action_list_foucs*)背零;
                     }
              });

注:上面方法,適用于ListView中item不超過一頁的情況无埃,如果item過多徙瓶,上下滾動的時候會出現(xiàn)兩個item被選中毛雇。
方式二:解決滾動時item被選中的狀態(tài)
定義兩個變量,一個保存當前點擊item的position侦镇,另一個保存點擊的view灵疮,代碼如下:

listview.setOnItemClickListener(**new** AdapterView.OnItemClickListener() {
@Override
**public void** onItemClick(AdapterView<?> adapter, View v, **int** position, **long** flags) {
        v.setBackgroundResource(R.drawable.*action_list_foucs*);//把當前選中的條目加上選中效果  
                    **if** (last_item != -1 && last_item != position) {
//如果已經(jīng)單擊過條目并且上次保存的item位置和當前位置不同  
                              oldView.setBackgroundResource(0);//把上次選中的樣式去掉  
                     } 
                                oldView = v;//把當前的條目保存下來  
                                last_item = position;//把當前的位置保存下來 
                  //此處使用sharedpreference保存參數(shù),傳遞到Adapter
                                Editor editor = sp.edit();
                                editor.putInt("last_item", last_item);
                                editor.commit();
                    }
             });

adapter

@Override
  **public** View getView(**int**position, View convertView, ViewGroup parent) {
    **final int** type = getItemViewType(position);
    **final**ViewHolder holder;
    **int**last_item = sp.getInt("last_item", -1);
    **if**(convertView == **null**) {
      **if** (type == *VIEW_TYPE_CATEGORY*){
        convertView = mInflater.inflate(R.layout.*category_list_item*, parent, **false**);
      }**else**{
        convertView = mInflater.inflate(R.layout.*action_list_item*, parent, **false**);
      }
      holder = **new**ViewHolder();
      holder.text = (TextView) convertView.findViewById(android.R.id.*text1*);
      convertView.setTag(holder);
    } **else** {
      holder = (ViewHolder) convertView.getTag();
    }
    **if**(last_item==position){
    holder.text.setBackgroundResource(R.drawable.*action_list_foucs*);
    }**else**{
    holder.text.setBackgroundResource(0);
    }
    holder.text.setText(mTitles[position]);
    **return**convertView;
  }

注:上面代碼中壳繁,activity向adapter實時傳遞參數(shù)用的sharedPreference震捣,也可以換成其他方式。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末闹炉,一起剝皮案震驚了整個濱河市蒿赢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌渣触,老刑警劉巖羡棵,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嗅钻,居然都是意外死亡皂冰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門养篓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秃流,“玉大人踩麦,你說我怎么就攤上這事刻剥。” “怎么了熬拒?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵语御,是天一觀的道長峻贮。 經(jīng)常有香客問我,道長应闯,這世上最難降的妖魔是什么纤控? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮碉纺,結果婚禮上船万,老公的妹妹穿的比我還像新娘。我一直安慰自己骨田,他們只是感情好耿导,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著态贤,像睡著了一般舱呻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天箱吕,我揣著相機與錄音芥驳,去河邊找鬼。 笑死茬高,一個胖子當著我的面吹牛兆旬,可吹牛的內容都是我干的。 我是一名探鬼主播怎栽,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼丽猬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了婚瓜?” 一聲冷哼從身側響起宝鼓,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎巴刻,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛉签,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡胡陪,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碍舍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柠座。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖片橡,靈堂內的尸體忽然破棺而出妈经,到底是詐尸還是另有隱情,我是刑警寧澤捧书,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布吹泡,位于F島的核電站,受9級特大地震影響经瓷,放射性物質發(fā)生泄漏爆哑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一舆吮、第九天 我趴在偏房一處隱蔽的房頂上張望揭朝。 院中可真熱鬧,春花似錦色冀、人聲如沸潭袱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屯换。三九已至,卻和暖如春伶氢,著一層夾襖步出監(jiān)牢的瞬間趟径,已是汗流浹背瘪吏。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蜗巧,地道東北人掌眠。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像幕屹,于是被迫代替她去往敵國和親蓝丙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內容