首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RatingBar onClick

RatingBar onClick
EN

Stack Overflow用户
提问于 2010-08-10 04:33:06
回答 5查看 27.3K关注 0票数 24

我有一个ListView,它使用不同的XML文件来创建视图和创建项目。其中一个XML文件包含RatingBar。一切都显示出来,看起来都很棒。

我正在尝试将一个onClick处理程序附加到RatingBar以启动一个新活动。我的RatingBar是style ?android:attr/ratingBarStyleSmall;所以它只是一个指示器(我想要小的RatingBar点击把用户带到一个活动,在那里他们可以做各种评级)。

我的问题是RatingBar的onClick处理程序永远不会执行。更有趣的是,我使用了相同的代码来使LinearLayout可点击,并且它工作得很好。有人能告诉我为什么吗?

我的适配器的getView如下所示:

代码语言:javascript
复制
@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;
}
EN

回答 5

Stack Overflow用户

发布于 2013-05-31 06:14:12

OnRatingBarChangeListener.,您可以尝试使用另一个可用于RatingBar的事件看这个例子,它对我很有效!

代码语言:javascript
复制
ratingBar.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

        @Override
        public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
            viewMarketDetails(mContext);
            dialog.dismiss();
        }
    });

所以你不需要使用onClickEvent,但是你有同样的效果,当然,只有在你实际改变值的情况下才能工作。(如果单击实际值,则不起作用)

票数 7
EN

Stack Overflow用户

发布于 2014-11-05 16:14:06

代码语言:javascript
复制
ratingBar1.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {

        @Override
        public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {

            String rateValue = String.valueOf(ratingbar1.getRating());
            System.out.println("Rate for Module is"+rateValue);
        }
    });             
票数 6
EN

Stack Overflow用户

发布于 2010-08-12 02:19:55

我已经解决了这个问题,方法是将RatingBar包装在LinearLayout中,并将onClick侦听器附加到LinearLayout。我不喜欢这样做,但它是有效的。出于某种神秘的原因,onClick不会为RatingBar执行。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3443939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档