Android的onClick事件不触发事件、Android、onClick

2023-09-06 22:23:13 作者:世界的旁观者

我真的需要在这一点上的帮助,因为在我的应用程序不能正常工作的唯一的东西。我有被扩大BaseAdapter适配器管理列表视图。

在使用convertView成立OnClickListener的getview功能的IM。这OnClickListener工作得很好,当我触摸屏幕,但如果我使用的HTC Desire的轨迹球,我看行,屏幕上闪烁,但OnClickListener不叫...

我读过Android开发指南:的http://开发商.android.com /引导/主题/ UI / UI-events.html 和它说,我应该从轨迹球接收onClick事件...

我在这里把我的getview code,万一有人看到什么奇怪的。如果您有什么我可以做任何想法,请让我知道。

 公共查看getView(INT位置,查看convertView,父母的ViewGroup){        //对VA utiliser联合国ICImécanisme德缓存AVEC乐标签架        MyTag的持有人;        如果(convertView == NULL){            //在本身领域河畔勒庞布局            // convertView = inflater.inflate(android.R.layout.simple_list_item_2,NULL)             convertView = inflater.inflate(R.layout.twolines,NULL);            持有人=新MyTag的();            //对récupère莱单元DU布局丹斯乐架            holder.txtData =(TextView中)convertView.findViewById(R.id.productTitle);            holder.txtExtra =(TextView中)convertView.findViewById(android.R.id.text2);            holder.imgScreenshot =(ImageView的)convertView.findViewById(R.id.Screenshot);            holder.imgFlag =(ImageView的)convertView.findViewById(R.id.Flag);            //holder.mLoginButton =(LoginButton)convertView.findViewById(R.id.login);            holder.mPostButton =(ImageView的)convertView.findViewById(R.id.postButton);            // sauvegarde杜架            convertView.setTag(保持器);        }其他{            支架=(MyTag的)convertView.getTag();        }        // Facebook发布按钮管理        holder.mPostButton.setOnClickListener((OnClickListener)新OnPostClickListener(convertView.getContext(),mFacebook,Long.toString(数据[位置] .videoId),数据[位置] .title伪,数据[位置] .publisher,数据[位置] .imageUrl));        holder.mPostButton.setImageResource(com.cedemo.scan.utils.getPostButtonResId());        //数据更新        如果(数据[位置] .title伪!= NULL)            holder.txtData.setText(数据[位置] .title伪);        如果(数据[位置] .publisher!= NULL)            holder.txtExtra.setText(数据[位置] .publisher);        //获取和设置语言标志        如果(数据[位置]。外语!= NULL)            holder.imgFlag.setImageResource(com.cedemo.scan.utils.getFlag(数据[位置]。外语));        //设置截图        如果(数据[位置] .myVideoScreenshotBm!= NULL)            holder.imgScreenshot.setImageBitmap(数据[位置] .myVideoScreenshotBm);                    / * ================================================ =================                       这个功能是不是叫当我点击轨迹球                       但调用时我触摸屏幕。                       当我使用轨迹球选择行一次闪烁。                       ================================================== =============== * /        //设置点击技工是否有有效的视频网址        如果(数据[位置]的.url!= NULL){            convertView.setOnClickListener((OnClickListener)新OnProductClickListener(位置));        }        返回convertView;    } 

解决方案

也许你想使用推荐的方法 setOnItemClickListener() 的ListView控件,而不是 - 我想这是一个不好的风格直接在适配器中设置监听器

android eclispe里面OnClickListener 为什么不行

I really need a help on this point because its the only thing not working in my app. I have a listview managed by an adapter that is extending BaseAdapter.

In the getview function im using the convertView to set up a OnClickListener. This OnClickListener work well when I am touching the screen but if I use the trackball of the HTC Desire, I see the row flashing on the screen, but the OnClickListener is not called...

I've read the android dev guide : http://developer.android.com/guide/topics/ui/ui-events.html and its say that I should receive a onClick event from the trackball...

Im putting here my getview code in case someone see anything strange. If you have any idea on what I can do, please let me know.

public View getView(int position, View convertView, ViewGroup parent) {
        //ici on va utiliser un mécanisme de cache avec le Tag Holder
        MyTag holder;           
        if (convertView == null){
            //On se branche sur le bon layout
            // convertView = inflater.inflate(android.R.layout.simple_list_item_2, null)
             convertView = inflater.inflate(R.layout.twolines, null);
            holder          = new MyTag();
            //on récupère les éléments du layout dans le holder
            holder.txtData  = (TextView)convertView.findViewById(R.id.productTitle);
            holder.txtExtra = (TextView)convertView.findViewById(android.R.id.text2);
            holder.imgScreenshot = (ImageView)convertView.findViewById(R.id.Screenshot);
            holder.imgFlag = (ImageView)convertView.findViewById(R.id.Flag);

            //holder.mLoginButton = (LoginButton) convertView.findViewById(R.id.login);
            holder.mPostButton = (ImageView) convertView.findViewById(R.id.postButton);

            //sauvegarde du holder
            convertView.setTag(holder);
        } else {
            holder = (MyTag)convertView.getTag();
        }


        //Facebook post button management
        holder.mPostButton.setOnClickListener((OnClickListener) new OnPostClickListener(convertView.getContext(),mFacebook, Long.toString(data[position].videoId), data[position].title, data[position].publisher, data[position].imageUrl));

        holder.mPostButton.setImageResource(com.cedemo.scan.utils.getPostButtonResId());


        //data update
        if(data[position].title != null)
            holder.txtData.setText(data[position].title);
        if(data[position].publisher != null)
            holder.txtExtra.setText(data[position].publisher);



        //get and set the language flag
        if(data[position].language != null)
            holder.imgFlag.setImageResource(com.cedemo.scan.utils.getFlag(data[position].language));

        //set the screenshot
        if(data[position].myVideoScreenshotBm != null)
            holder.imgScreenshot.setImageBitmap(data[position].myVideoScreenshotBm);


                    /* =================================================================

                       THIS FUNCTION IS NOT CALLED WHEN I CLICK ON THE TRACKBALL
                       BUT IS CALLED WHEN I TOUCH THE SCREEN.
                       WHEN I USE THE TRACKBALL THE SELECTED ROW IS FLASHING ONCE.

                       ================================================================= */
        //set the click mechanic if there is a valid video url
        if(data[position].url != null) {
            convertView.setOnClickListener((OnClickListener) new OnProductClickListener(position));


        }

        return convertView;
    }

解决方案

Maybe you want to use the recommended method setOnItemClickListener() on the ListView instead - I guess it is a bad style to set the listeners directly within the adapter.

 
精彩推荐
图片推荐