2013-04-02 6 views
1

Я борюсь с попыткой реализовать функцию OnLongClick - я не могу понять, где добавить слушателя и определить полученный метод.Где инициализировать onLongClickListener

Реализация, которую я использовал, использует адаптер - и не имеет onClickListener, но работает jsut fine. кто может предложить где/как реализовать 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] Theres метод Onlongpressed(), вот что и нужно [1]: HTTP: // stackoverflow.com/questions/15770887/how-to-handle-swipe-down-gesture-on-an-imageview/15771081#15771081 –

ответ

1

к сожалению, что ListActivity не защищенный onListItemLongClick() метода, аналогичных функциям onListItemClick().

Вместо этого вы можете добавить setOnLongClickListener() в элемент макета верхнего уровня (или любой View) в функции вашего адаптера getView().

Пример:

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

Предупреждение, то OnLongClickListener вы положили на список вашего пункта могут скрыть воздействие на функцию onListItemClick() у вас уже есть работающий в списке. Если это так, вам также нужно будет добавить setOnClickListener() в getView() и использовать его вместо этого.

+0

Ваше право, больше не набирает не длинные клики, однако, когда я пытаюсь установить eclipse onClickListener говорит Невозможно создать экземпляр типа View.OnClickListener – Christiano

+0

Я регулярно устанавливаю длинные и короткие клики на элементах списка, поэтому есть небольшая ошибка. Вот пример: 'myView.setOnClickListener (новый OnClickListener() {. \t @Override \t общественного недействительный OnClick (View v) { \t \t // Сделать что-то на коротком нажмите здесь \t} });' Make убедитесь, что вы импортируете правильный тип 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; 
      } 
     }); 


} 
Смежные вопросы