2013-04-02 69 views
1

我努力嘗試實現一個OnLongClick功能 - 我不明白在哪裏添加一個偵聽器並定義結果方法。在哪裏初始化onLongClickListener

我使用的實現使用了一個適配器 - 並沒有onClickListener,但工作正常。任何人都可以提出哪裏/如何實現OnLongClick聽衆

我不需要每個項目在列表中執行不同的操作 - 在屏幕上只是anywere拿起長按

public class CombChange extends ListActivity { 
    @Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

setListAdapter(new ListEdit(this, symbols)); 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 

    String selectedValue = (String) getListAdapter().getItem(position); 
    if (lastPressed.equals(selectedValue)){ 
    count++;} 
} 

public class ListEdit extends ArrayAdapter<String> { 
private final Context context; 
private final String[] values; 

public ListEdit(Context context, String[] values) { 
    super(context, R.layout.activity_comb_change, values); 
    this.context = context; 
    this.values = values; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View rowView = inflater.inflate(R.layout.activity_comb_change, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.label); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.logo); 
    textView.setText(values[position]); 

    // Change icon based on name 
    String s = values[position]; 

    if (s.equals("a")) { 
    imageView.setImageResource(R.drawable.a); 

return rowView; 
} 
} 
+1

實現OngestureListener正如我剛纔3分鐘前[這裏] [1] 那裏有一個Onlongpressed()方法貼出來,那是什麼u需要 [1]:HTTP:// stackoverflow.com/questions/15770887/how-to-handle-swipe-down-gesture-on-an-imageview/15771081#15771081 –

回答

1

不幸的是,一個ListActivity沒有類似onListItemClick()功能的保護onListItemLongClick()方法。

取而代之,您可以將setOnLongClickListener()添加到適配器的getView()函數的頂層佈局項目(或任何View)中。

myView.setOnLongClickListener(new OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     // Do something here. 
     return true; 
    } 
}); 

警告,你把到你的列表項可能隱藏暴露你已經對列表工作onListItemClick()功能OnLongClickListener。如果是這種情況,您還需要將setOnClickListener()添加到getView(),然後使用它。

+0

你的權利,不再拿起非長時間的點擊,但是當我嘗試設置onClickListener的日食說不能實例化類型View.OnClickListener – Christiano

+0

我定期在列表項目上設置多點和短點擊監聽器,所以有一個小錯誤。這裏有一個例子:'myView.setOnClickListener(新OnClickListener(){。 \t @覆蓋 \t公共無效的onClick(視圖v){ \t \t //請在短按一下這裏的東西 \t} });'製作確定你正在導入正確的OnClickListener:'import android.view.View.OnClickListener;' –

0

在getView你可以說

rowview.setOnLongClickListener(new OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View arg0) { 
       //Do your stuff here 
       return false; 
      } 
     }); 
2

試試這個:

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 

v.setOnLongClickListener(new OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View v) { 
       // TODO Auto-generated method stub 

       String selectedValue = (String) getListAdapter().getItem(position); 
       if (lastPressed.equals(selectedValue)){ 
       count++;} 

       return false; 
      } 
     }); 


} 
相關問題