在Android內ListView是個相當常用的東西
相對於iOS來說也就是TableView
在iphone上面用tableView或Android的ListView上面加個按鈕都是相當容易的事
但是加了按鈕後該如何取得按鈕的事件(按下、放開、點兩下、長按、拖曳....等)在Android上面卻成了問題
當按鈕與ListView同時出現時只能夠偵測到按鈕的事件
而原本所使用的interfave或OnItemClickListener來偵測按鈕事件卻會失效
如下圖就是兩個同時存在的狀況(ListView & checkBox)
如果沒有解決辦法我也不會來po這篇XD
在Listview的interface內getView加上下面這行(以圖中這範例為例,使用checkBox)checkBox.setFocusable(false);
但是光這樣設定還是會造成checkBox跟背景沒辦法融合
也就是點按鈕是按鈕,ListView的row是不同的地方
只要加上以下這行,把checkBox設定為不可按就搞定了checkBox.setClickable(false);
在Android內的ListView、GridView與ListView內容都必須靠Adapter來作管理(iOS為NSArray或NSMutableArray)
只需要宣告上作修改就可以用另一種方式作呈現
參考資料
Android Developer
Android - ArrayAdapter
Android - ListView
Android - GridView
Android - Button in ListView
by Isken Huang - 11/02/2010 - Android
訂閱:
張貼留言 (Atom)
謝謝,對我很有幫助。
回覆刪除不好意思~ 我想請問你一下
回覆刪除文章內寫的這個"Listview的interface內getView加上下面這行"請問這意思是?
因為我在我的介面裡找不到getview耶...
設定也會錯誤 想請問要怎麼做呢?
希望您幫幫我~ 謝謝 ^ ^
請參考下面連結
回覆刪除http://developer.android.com/reference/android/widget/ArrayAdapter.html#getView(int, android.view.View, android.view.ViewGroup)
感謝分享
回覆刪除最近一直拿這問題沒辦法
請問關於listview中的getView
回覆刪除可以分享一下您相關的心得嗎
因為在實作上碰上了需要用getView
來取得項數和設定Textview裡的文字
懇請網主幫忙
to lemon,
回覆刪除抱歉不太懂你所需的地方,如果是針對listView內的cell可以用xml來做變更,這樣就更加容易來對於內容做個人化,getView是裡面內建的function,主要用來顯示每一個cell的內容,可能最大問題會在lazyload這部份。
如果有問題也歡迎提出來討論,能幫上忙的地方我也會盡力協助。
感謝版主協助~orz
回覆刪除目前有看到一些資料是可以由使用者
自己自訂listview裡面的物件,
來達到更複雜的自訂內容。
具體內容是使用SimpleAdapter或著是ArrayAdapter
去使用裡面的getview函數來達到此目的。
之前所想問取的是版主有沒有這方面的使用經驗,可以分享使用心得
ps.版主這篇的code也是加在自訂的getView函數中嗎?
下面附註查到的一個範例
http://blog.joomla.org.tw/component/content/article/180.html
to lemon,
回覆刪除剛剛寫了一篇可以參考看看
http://iskens.blogspot.com/2011/03/android-adapter-getview.html
您好, 請教個問題. 要怎樣實現如Android Setting中的ListView, 有的有CheckBox, 有的是圓型button(button中有三角形, 這是Android自帶的icon嗎)? Thanks.
回覆刪除to clliao,
回覆刪除你所說得那些都是Android SDK的UI沒錯,listView可以自訂內容,你說的圓形按鈕也可以自己設計在用ImageButton來達到效果