2014-03-29 42 views
0

我想知道是否有人能夠幫助我,因爲我似乎無法找到任何記錄的方式來執行此操作,您如何獲得列表視圖中列的視圖?Android ListView檢查觸摸哪一列

所以我有一個列表視圖,有一個自定義的適配器,它有三個控件,兩個textview和一個imageview,我想要發生的是當你按最後一列(圖片)我想能夠刪除該行,我可以使用整行,但我希望用戶必須單擊imageview列才能觸發刪除。

我該怎麼做?我必須在我的OnClickListener中引用哪些內容才能檢查選定的imageview列?

感謝您閱讀

lstNotes.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 


     } 
    }); 

位置只是引用列表行的位置,並且不允許您指定一個列索引或類似的東西

+0

雖然這不完全是你想要的,但這個問題和答案可能對你有用。 http://stackoverflow.com/questions/1709166/android-listview-elements-with-multiple-clickable-buttons/1776328#1776328 – Squonk

+0

@Squonk謝謝:),我現在有一個閱讀,看看它是否清除任何我。 – Pheonix2105

回答

0

使用lstNotes.setOnItemClickListener無法檢測點擊 - 這純粹是物品點擊。相反,在您的列表視圖的適配器中,您應該爲每個視圖項目設置點擊偵聽器。

然後,您可以使用界面讓您的活動知道。類似以下內容可以工作:

public interface OnViewClickListener{ 
    void onTextView1Click(); 
    void onTextView2Click(); 
    void onImageViewClick(); 
} 

OnViewClickListener listener; 

public CustomAdapter(Context context, int layout, ArrayList<Object> list, OnViewClickListener listener) { 
this.listener = listener; 
    super(context, layout, list); 
} 

... 

public View getView(int position, View convertView, ViewGroup viewGroup) { 

... 

    textView1.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 
      listener.onTextView1Click(); 
     }}); 

    textView2.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 
      listener.onTextView2Click(); 
     }}); 

    imageView.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 
      listener.onImageViewClick(); 
     }}); 
} 
+0

我不能完全使用你的答案,我已經將以上所有添加到我的CustomListViewAdapter並在我的片段上實現了接口,現在它只在按下圖像時觸發,但它在偵聽器中給我一個空指針異常.onImageViewClick(); (我已經刪除了其他兩個,因爲我只需要圖像一個,但我想他們會拋出相同的錯誤,我不明白爲什麼我不必實例化OnViewClickListener?對不起漫步 – Pheonix2105

+0

@ Pheonix2105我已經更新了我的答案,監聽器可以在你的構造函數中設置,只需在上面添加一個額外的參數到你的末尾,或者你可以添加一個setter方法來調用適配器來設置監聽器。 – roarster