2011-01-07 91 views
28

我同時使用onClickListeneronLongClickListenerTextView的的ListView。我發現在Android 1.6中,長按點擊偵聽器與點擊監聽器一起被觸發,這意味着當我長時間點擊時,兩者都被觸發。但是在未來的版本中情況並非如此。有沒有解決這個問題?使用兩種onClickListener和onLongClickListener在列表視圖中的Android 1.6

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    if (convertView == null) { 
    LayoutInflater inflater = getLayoutInflater(); 
    row = inflater.inflate(R.layout.row, parent, false); 
    } 

    TextView tv = (TextView) row.findViewById(R.id.tv); 

    tv.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
     showMessage(); 
     } 
    }); 

    tv.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
     showLongMessage(); 
     } 
    }); 
} 
+0

什麼 「修復」 見developers website?它在1.6版本中被解僱的事實肯定是一個錯誤。 – Falmarri 2011-01-07 00:26:52

+0

通過修復,我的意思是,有什麼辦法來防止這個問題。 – dcanh121 2011-01-07 00:29:25

回答

12

我想你應該使用OnItemLongClickListener()而不是OnLongClickListener()。

進一步響應

6
TextView t1 = (TextView) findViewById(R.id.textView1); 
t1.isClickable(); 

t1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getBaseContext(), "Clicked", Toast.LENGTH_SHORT).show(); 
    } 
}); 

t1.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     // TODO Auto-generated method stub 
     Toast.makeText(getBaseContext(), "Long Clicked", Toast.LENGTH_SHORT).show(); 
     return true; 
    } 
}); 
1
itemToClick.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v)  { 
     //do your logic on click 
    }); 
itemToClick.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     // do your logic for long click and remember to return it 
     return true; }});