设置listView条目里面组件的监听事件步骤:
首先,设置ListView的OnItemClickListener事件
然后,在OnItemClickListener 的回调方法onItemClick方法里面通过参数view.findViewById(...)来设置各条目组件的监听事件即可。
具体例子如下:
public class ChatFragment extends Fragment implements OnItemClickListener ,OnClickListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View sessionListView = inflater.inflate(R.layout.message_session_list, container, false);
ListView sessionList = (ListView)sessionListView.findViewById(R.id.message_session_list_listcontacts);
List<HashMap<String,String>> sessionListData = new ArrayList<HashMap<String,String>>();
HashMap<String,String>item1 = new HashMap<String,String>();
item1.put("count", "45");
item1.put("phoneNum", "18328786364");
item1.put("name", "cheng yang");
item1.put("latestDate", "12-23");
sessionListData.add(item1);
SimpleAdapter adapter = new SimpleAdapter(getActivity(), sessionListData, R.layout.message_session_item, new String[]{
"count","phoneNum","name","latestDate"
}, new int[]{
R.id.message_session_item_count,R.id.message_session_item_phoneNum,R.id.message_session_item_name,R.id.message_session_item_latestDate
});
sessionList.setAdapter(adapter);
sessionList.setOnItemClickListener(this);
return sessionListView;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
view.findViewById(R.id.message_session_item_rightSide).setOnClickListener(this);
view.findViewById(R.id.message_session_item_portrait).setOnClickListener(this);
}
@Override
public void onClick(View v) {
Log.i("MainActivity","view id:"+v.getId());
switch(v.getId()){//user clicked the portrait
case R.id.message_session_item_portrait:
Toast.makeText(getActivity(), "Image Clicked !", Toast.LENGTH_LONG).show();
break;
case R.id.message_session_item_rightSide://user clicked the left part of an item
Toast.makeText(getActivity(), "Item Left Part Was Clicked !",Toast.LENGTH_LONG).show();
break;
}
}
}