2016-07-23 7 views
0

私のCustomAdapter内でOnClickListenerを動作させようとしていますが、私の場合は何も起こりません。CustomAdapter内のsetOnClickListener

@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

リストビュー内にリストビューがありますか?また、レイアウトxmls – chejaras

+0

をデバッグし、 'setOnClickListener'行にブレークポイントを置いて、その行にヒットするかどうか確認できますか? – Vucko

+0

アダプタがバインドされているリストビューでItemClickListnerを設定します。アダプタ内ではありません –

答えて

0

私は、あなたがlLstItemViewの中にリストビューを持っているのではないかと疑います。あなたが今やっていることは、あなたのリスト項目を取得して、その中の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'を使用してください。 –

関連する問題