PullToRefreshListView 设置长按事件,不知道大家有没有尝试过,
今天我尝试了下发现在PullToRefreshListView setOnItemLongClick的时候就没有这个方法,感觉到很奇怪,按理说不应该啊,然后就找了下demo代码发现:
@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pulltorefresh);
mPullRefreshListView = (PullToRefreshListView)findViewById(R.id.pull_refresh_list); // Set a listener to be invoked when the list shouldbe refreshed.
mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
@Override
public voidonRefresh(PullToRefreshBase<ListView> refreshView) { String label =DateUtils.formatDateTime(getApplicationContext(), System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_ALL); // Update the LastUpdatedLabel
refreshView.getLoadingLayoutProxy().setLastUpdatedLabel(label); // Do work to refresh the list here. new GetDataTask().execute();
} });
// Add an end-of-list listener
mPullRefreshListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {
@Override publicvoid onLastItemVisible() {
Toast.makeText(PullToRefresh.this, "End of List!", Toast.LENGTH_SHORT).show();
} });
ListView actualListView = mPullRefreshListView.getRefreshableView();
// Need to use the Actual ListView when registering for Context Menu
registerForContextMenu(actualListView);
mListItems = newLinkedList<String>();
mListItems.addAll(Arrays.asList(mStrings));
mAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mListItems);
/** * Add Sound Event Listener */
SoundPullEventListener<ListView> soundListener = new SoundPullEventListener<ListView>(this); soundListener.addSoundEvent(State.PULL_TO_REFRESH, R.raw.pull_event); soundListener.addSoundEvent(State.RESET, R.raw.reset_sound); soundListener.addSoundEvent(State.REFRESHING, R.raw.refreshing_sound); mPullRefreshListView.setOnPullEventListener(soundListener);
// You can also just use setListAdapter(mAdapter) or // mPullRefreshListView.setAdapter(mAdapter) actualListView.setAdapter(mAdapter);}
这里还是不知道是为什么,然后上网搜了下找到了一段很有意思的代码:ListView actualListView =mPullRefreshListView.getRefreshableView();
actualListView.setOnLongClickListener(new OnLongClickListener() {
@Override public boolean onLongClick(View v) {
Log.d("privet ia long click", "yes");
return true; }});
看到这里感觉好像明白了点,试了下结果长按事件出来了。这到底是为什么呢?因为长按事件是响应在listView Item上的,所以我们在设置长按事件的时候先要获取到PullRefreshListView中的listView,然后在获取到的listview中进行长按事件的注册,这样就ok了。在其他的操作上也可以按照这个思路进行处理。