我有一个ListView使用不同的XML文件来创建视图并使项目。其中一个XML文件包含一个RatingBar。一切都显示,看起来很棒。RatingBar onClick
我想附加一个onClick处理程序到RatingBar来启动一个新的活动。我的评分栏是风格?android:attr/ratingBarStyleSmall;所以它只是一个指标(我希望小规模的评级栏点击让用户进入一个活动,他们可以做各种评级)。
我的问题是RatingBar的onClick处理程序永远得不到执行。更令人感兴趣的是,我使用相同的代码来使LinearLayout可点击,并且工作正常。有谁能告诉我为什么?
我的适配器的getView看起来这样:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
// get the View for this list item
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
switch (type) {
// ...
case TYPE_LOOKUP:
v = vi.inflate(R.layout.layout_itemlist_itemlookup, parent, false);
LinearLayout vLookup = (LinearLayout)v.findViewById(R.id.itemlist_lookup);
if (vStore != null) {
vStore.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// THIS HANDLER WORKS FINE
Intent intentLaunchLookup = new Intent(ActivityItemList.this, ActivityLookup.class);
startActivity(intentLaunchLookup);
}
});
}
break;
case TYPE_SEPARATOR:
v = vi.inflate(R.layout.layout_itemlist_itemseparator, parent, false);
RatingBar r = (RatingBar)v.findViewById(R.id.itemlist_rating);
if (r != null) {
r.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// THIS HANDLER DOES NOT GET EXECUTED (r IS NOT NULL; SO THIS SHOULD HAVE BEEN CREATED)
Intent intentLaunchRating = new Intent(ActivityItemList.this, ActivityRating.class);
startActivity(intentLaunchRating);
}
});
}
break;
// ...
}
}
// …
// return the created view
return v;
}
有没有人有任何其他意见呢?我仍然无法执行onClick处理程序。正如你所看到的,我为LinearLayout使用相同的代码,并且工作正常。我的评级栏设置为可点击。我在LinearLayout和RatingBar的onClick监听器中设置了断点,并且只有LinearLayout处理程序被执行。注意:RatingBar不在LinearLayout中。如您所见,它们位于两个不同的XML文件中。 – Andrew 2010-08-11 18:13:27