2013-07-17 64 views
1

我有一個PullToRefreshListView - https://github.com/chrisbanes/Android-PullToRefresh爲什麼長時間點擊PullToRefreshListView不起作用?

我需要做一個長的點擊。我的代碼:

pullToRefreshView = (PullToRefreshListView) findViewById(R.id.pull_to_refresh_listview); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, arr); 
    pullToRefreshView.setAdapter(adapter); 
    pullToRefreshView.setLongClickable(true); 
pullToRefreshView.setOnLongClickListener(new OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 
      Log.d("privet ia long click", "yes"); 
      return true; 
     } 
    }); 

但它不起作用。爲什麼?

回答

1

檢查實施例鑑於隨着這種庫,並檢查下面的代碼(這個代碼是從僅此庫的示例代碼):

@Override 
public 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 should be refreshed. 
    mPullRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() { 
     @Override 
     public void onRefresh(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 
     public void 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 = new LinkedList<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(); 

所以implimenting這之後您可以使用它longpresslistener ..

actualListView.setOnLongClickListener(new OnLongClickListener() { 

    @Override 
    public boolean onLongClick(View v) { 
     Log.d("privet ia long click", "yes"); 
     return true; 
    } 
}); 

^h打開它的幫助,你明白了......乾杯!

0

我有這個錯誤,並保存它。

首先我使用這段代碼,但沒有工作。

mPullRefreshListView.getRefreshableView().setOnLongClickListener(new OnLongClickListener() { 

@Override 
public boolean onLongClick(View v) { 
    return true; 
} 

});

因爲長按方法是視圖的方法,當你長時間點擊你的listview項目,你只需要長時間點擊你的列表視圖項目視圖,你需要將長按聽衆設置到適配器中的項目視圖。僅僅指剛這樣的:

public View getView(int position, View convertView, ViewGroup parent) { 
if (convertView == null) { 
    holder = new ViewHolder(); 
    convertView = mInflater.inflate(R.layout.article_list_item, parent, false); 
    //your long click is here. 
    convertView.setOnLongClickListener(new OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     return false; 
    } 
    }); 

return convertView; 

}

相關問題