在項目裏面有時候需要模擬ListView的item的點擊事件(就是不用手去點擊,直接在代碼裏面實現),發現了兩種方式如下:
第一種:
適合多個方式來響應點擊事件的(比如:可以點擊某一行。可以接收了一個廣播來觸發點擊一行。就是多種方式走同一個代碼塊:就像下方的//do someThings),那麼我們需要先給listview設置一個listener。
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//do someThings
});
接下來其他需要走同一個流程的地方獲取這個listener,然後通過這個listener.onItemClick();方法就能執行同一個代碼塊了(//do someThings);方法裏面的四個參數,分別是(parentView,view,click_position,0)
AdapterView.OnItemClickListener onItemClickListener = listview.getOnItemClickListener();
if(onItemClickListener!=null){
onItemClickListener.onItemClick(listview,null,position,0);
}
第二種:
就是純粹的想用代碼實現點擊了。其實原理都都差不多,listview自己有一個方法performItemClick();我們只需要調用這個方法就好了。
listView.performItemClick(listView.getChildAt(click_position), click_position, listView.getItemIdAtPosition(click_position));
或者
listView.performItemClick(listView.getAdapter().getView(click_position, null, null), click_position, listView.getItemIdAtPosition(click_position));
感覺這個方法Gridview肯定也有。沒去試過。遇到了可以用這方法實驗一下。