2016-07-23 67 views
0

我想讓OnClickListener在我的CustomAdapter中工作,但在我的情況下沒有任何反應。setOnClickListener裏面CustomAdapter

@Override 
public View getView(int i, View view, ViewGroup viewGroup) { 
    if(inflater == null){ 
     inflater= (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    } 
    if(view==null){ 
     view=inflater.inflate(R.layout.list_item_blog,viewGroup,false); 
     ListView lv = (ListView) view.findViewById(R.id.listView); 

    if(lv!=null){ 
      lv.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Dialog d = new Dialog(view.getContext()); 
       d.setContentView(R.layout.dialog_layout); 
       d.show(); 
      } 
     }); 
    } 
    } 
+0

你有一個listview內的列表視圖?你還可以發佈你的佈局xmls – chejaras

+0

調試,並在'setOnClickListener'行上放置一個斷點,看看它是否曾經碰到過這一行。 – Vucko

+0

您在適配器綁定的列表視圖上設置了一個ItemClickListner。不在適配器內 –

回答

0

我懷疑你的lLstItemView中有一個ListView。你現在正在做的是獲取你的列表項,然後試圖在其中找到一個ListView來設置你的點擊監聽器。

如果你真的想設置一個點擊監聽,整個列表上,則您應該在您的活動做這個,或者你可以通過添加clickListener或傳遞作爲參數父viewGroup設置:

viewGroup.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
    Dialog d = new Dialog(view.getContext()); 
    d.setContentView(R.layout.dialog_layout); 
    d.show(); 
    } 
}); 

如果你想使用ListView.setOnItemClickListener(ClickListener)上設置列表項目的點擊監聽,那麼你應該設置你的ListView中clickListener在你的活動代碼:

listView.setOnItemClickListener(new OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 
    Dialog d = new Dialog(view.getContext()); 
    d.setContentView(R.layout.dialog_layout); 
    d.show(); 
    } 
}); 

如果你想設置的點擊監聽器在列表項內部的視圖中,通過檢查您嘗試獲取的視圖的ID是否存在於list_item_blog中,確保獲得了正確的子視圖。

祝你好運!希望這可以幫助。

+0

不......你應該使用'listview.setOnItemClickListener' –

+0

這是真的,如果你想在整個項目上設置你應該使用'setOnItemClickListener'我更新我的答案。 –