【发布时间】:2016-03-04 10:49:39
【问题描述】:
我在片段的重写 onViewCreated 方法中有一个列表项单击侦听器 (onItemClickListener)。方法体如下:
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
final String uname = getActivity().getIntent().getExtras().getString("uname");
list = (ListView) getActivity().findViewById(R.id.drlistforhome);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Doctors doc = rh.drList.get(position);
imgURL = doc.getDrProPic();
docName = doc.getDrName();
jobTitle = doc.getDrJobTitle();
docSpeciality = doc.getDrSpeciality();
docUname = doc.getDrUname();
startActivity(new Intent(getActivity().getApplicationContext(), DoctorsProfileH.class).putExtra("img", imgURL)
.putExtra("name", docName)
.putExtra("title", jobTitle)
.putExtra("speciality", docSpeciality)
.putExtra("uname", uname)
.putExtra("druname", docUname));
}
});
}
自定义列表视图布局由六个视图组成:4 个TextViews、一个ImageView 和一个RatingBar。 onItemClickListener 一直在监听列表项点击,直到 RatingBar 未被添加。但是现在我在自定义布局中添加了RatingBar,监听器将不再监听点击。我正在使用自定义适配器来设置所有视图。这是我的自定义适配器:
class TDsAdapter extends ArrayAdapter<Doctors> {
public TDsAdapter(){
super(getActivity().getApplicationContext(),R.layout.custom_list_view,rh.drList);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View itemView = convertView;
if (itemView == null) {
itemView = inflater.inflate(R.layout.custom_list_view, parent, false);
}
Doctors currentItem = rh.drList.get(position);
TextView drName = (TextView) itemView.findViewById(R.id.drName);
drName.setText(currentItem.getDrName());
TextView drSpeciality = (TextView) itemView.findViewById(R.id.drSpeciality);
drSpeciality.setText(currentItem.getDrSpeciality());
TextView drJobTitle = (TextView) itemView.findViewById(R.id.drJobTitle);
drJobTitle.setText(currentItem.getDrJobTitle());
ImageView drProPic = (ImageView) itemView.findViewById(R.id.drPropic);
Picasso.with(getContext()).load(currentItem.getDrProPic()).into(drProPic);
TextView distence = (TextView) itemView.findViewById(R.id.dis);
distence.setText(currentItem.getDis());
RatingBar rb = (RatingBar) itemView.findViewById(R.id.ratingBar);
rb.setRating((float) 2.5);
return itemView;
}
}
运行应用程序后,列表视图显示正常,RatingBar 符合预期,但列表项不再可单击。当我在侦听器中使用断点调试应用程序时,该断点永远不会被执行。我对片段的了解很少,这可能是因为onViewCreated 期望首先创建所有视图。但正如我们所见,所有视图都已成功创建。我该如何解决我的问题?请随时询问更多具体信息。
【问题讨论】:
-
尝试在您的 ratingbar 属性中添加 focuable="false"
-
试过了,没有运气:(
标签: android listview android-fragments onitemclicklistener ratingbar