2015-07-04 26 views
-4

我不知道爲什麼,但我onItemClickmethod甚至沒有調用。那麼,在每行添加按鈕(添加按鈕請參閱適配器)之前,它工作正常。OnItemClick下的片段不開放

請幫我找到了這個錯誤,謝謝

@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; 
} 
} 
+2

展示你'chat_people_row.xml' – Shvet

+1

發表您的chat_people_row.xml –

+0

後XML和代碼發射器actiivty –

回答

2

您已經添加上你的每個按鈕listItem是否正確?

則只是把這個線你按鈕的XML文件,一切都將正常工作

android:focusable="false" 

所以按鈕的XML應該是這樣的

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

這背後的原因是按鈕將所有的焦點當你點擊listItem時,所有的方法都會被調用而不是列表的點擊。

1

移動你的點擊聽者到getView()方法

convertView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.i("click", "Clicking "); 
      //remaining code    
     } 
    }); 
+0

你的意思是'if(convertView == null)'condition right? – Shvet

+0

謝謝,但我需要保持聽衆進入我的片段類 –

0

你不能像按鈕和OnClickListener一起使用可點擊的組件。在這種情況下,你的OnClickListener不會被調用。

+0

對不起,但我認爲你沒有得到我的問題,它現在工作正常 –