CustomAdapter中的setOnClickListener

时间:2016-07-23 15:44:00

标签: android listview android-adapter

我正在尝试让OnClickListener在我的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();
            }
        });
    }
    }

1 个答案:

答案 0 :(得分: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();
  }
});

如果要在列表项目内的视图上设置单击侦听器,请通过检查list_item_blog中是否存在您尝试获取的视图的ID来确保获得正确的子视图。

祝你好运!希望这会有所帮助。