2013-04-02 45 views
2

我正在使用Listview。在实现OnLongClick之前,我的onListItemClick工作正常,但是现在,在实现OnLongClick之后,长时间点击工作和普通列表点击都不起作用。它似乎隐藏暴露在你已经工作的onListItemClick()函数OnLongClick停止OnClick

任何人都可以看到为什么/建议一个解决方案?

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> implements OnLongClickListener{ 
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]); 
    rowView.setOnLongClickListener(new OnLongClickListener(){ 

      public boolean onLongClick(View arg0) { 
      context.startActivity(new Intent(context,RestoreOriginal.class)); 
       return false; 
      } 
     }); 
// Change icon based on name 
    String s = values[position]; 

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

return rowView; 
} 
} 
+0

为什么在行视图上而不是在ListView上设置onLongClickListener? –

+0

您需要将侦听器分配给ListView而不是每行。 – Sajmon

+0

@Marek Sebera我跟随someones建议,因为我无法找到设置OnLongClickListener的位置。你能提供一个建议吗? – Christiano

回答

4

我觉得你不应该做rowView.setOnLongClickListener

尝试一些喜欢这样的:

this.getListView().setLongClickable(true); 
this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() { 
    public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) { 
// whatever you wanna do 
     return true; 
    } 
}); 

我把代码how to capture long press event for Listeview item of a ListActivity?

希望这有助于。