2013-04-02 58 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?

希望這有助於。