2013-04-02 74 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; 
      } 
     }); 


} 
相关问题