Android 片段下的OnItemClick不工作

Android 片段下的OnItemClick不工作,android,android-listview,fragment,android-adapter,Android,Android Listview,Fragment,Android Adapter,我不知道为什么,但我的方法甚至没有调用。嗯,在添加按钮之前,它工作得很好。每行都有一个按钮和一个适配器 请帮我找到错误,谢谢 @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); Init(); //People list click chatPeoples.setOnItemClic

我不知道为什么,但我的方法甚至没有调用。嗯,在添加按钮之前,它工作得很好。每行都有一个按钮和一个适配器

请帮我找到错误,谢谢

@Override
  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    Init();

    //People list click
    chatPeoples.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            Log.i("click", "Clicking ");
            PeopleObject p = peopleObjList.get(position);
            String chattingToName = p.getPersonName();
            String chattingToDeviceID = p.getRegId();

            Intent intent = new Intent(getActivity(), ChatActivityNew.class);
            intent.putExtra("chattingFrom",MyUsername);
            intent.putExtra("chattingToName", chattingToName);
            intent.putExtra("chattingToDeviceID", chattingToDeviceID);
            startActivity(intent);

        }
    });


    searchIcon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (eSearch.getVisibility() == View.INVISIBLE) {
                eSearch.setVisibility(View.VISIBLE);
            }
        }
    });


   // setMyUsername();
    //getPeopleList();
}
适配器类

public class ChatAdapter extends BaseAdapter {

private Activity context;
private ArrayList<PeopleObject> chatPeoplesUsername;

public ChatAdapter(Activity cont, ArrayList<PeopleObject> cUsername ){
    this.context = cont;
    this.chatPeoplesUsername = cUsername;

}

static class ViewHolder {
    protected TextView txUsername;
    protected Button addFriend;
}

@Override
public int getCount() {
    return chatPeoplesUsername.size();
}

@Override
public Object getItem(int position) {
    return null;
}

@Override
public long getItemId(int position) {
    return 0;
}

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

    ViewHolder viewHolder = null;
    if (convertView == null) {

        LayoutInflater inflator = context.getLayoutInflater();
        convertView = inflator.inflate(R.layout.chat_people_row, null);
        viewHolder = new ViewHolder();

        viewHolder.txUsername = (TextView) convertView
                .findViewById(R.id.person_username);
        viewHolder.addFriend = (Button)convertView.findViewById(R.id.btn_add_friend);


        viewHolder.addFriend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "hm ..", Toast.LENGTH_SHORT).show();
            }
        });


        convertView.setTag(viewHolder);
    } else {
        viewHolder = (ViewHolder) convertView.getTag();
    }

    if (chatPeoplesUsername != null) {
        PeopleObject h = chatPeoplesUsername.get(position);
        viewHolder.txUsername.setText(h.getPersonName());

    }

    return convertView;
}
}

将click listner移动到getView方法


您在每个列表项上都添加了按钮,对吗

然后只要把这一行放在按钮的xml文件中,一切都会正常工作

android:focusable="false"
所以button的xml应该是这样的

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="false" />

这背后的原因是,当您单击listItem时,按钮将关注所有内容,因此该方法将被称为not list's click。

您不能同时使用button和OnClickListener等可单击组件。在这种情况下,OnClickListener将不会被调用。

显示您聊天室的xml文件。\u row.xml发布您的信息chat_people_row.xmlpost xml和带有启动程序activivtyi的代码我遇到的问题是我不知道我必须在行布局中添加android:focusable=false。非常感谢shreyash。然而,我不明白为什么我会得到反对票。很抱歉,我无法给出voteYou mean of if convertView==null条件,对吗?谢谢,但我需要将侦听器保留在我的片段类中对不起,但我认为您没有理解我的问题,它现在工作正常
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:focusable="false" />