Android 如何在每个项目的listview中实现简单的like按钮

Android 如何在每个项目的listview中实现简单的like按钮,android,listview,android-intent,android-button,Android,Listview,Android Intent,Android Button,我的列表视图项中有某些条目。在那里,我有一个简单的“喜欢”按钮(而不是像facebook一样的按钮)。你可以看到上面提到的截图;供参考。 我点击like按钮的那一刻;当我再次登录时,我想更改like按钮的颜色,并且like按钮的颜色应该保持不变(在like上更改) 此外,所有条目必须使用json在数据库中填写cust_id、bus_id、Offer_id;我很清楚 当我再次点击同一个按钮时(比如按钮),它的颜色已经改变了。必须将其更改回默认颜色,并且必须从数据库中删除数据 我该怎么做。。。? 1

我的列表视图项中有某些条目。在那里,我有一个简单的“喜欢”按钮(而不是像facebook一样的按钮)。你可以看到上面提到的截图;供参考。 我点击like按钮的那一刻;当我再次登录时,我想更改like按钮的颜色,并且like按钮的颜色应该保持不变(在like上更改)

此外,所有条目必须使用json在数据库中填写cust_id、bus_id、Offer_id;我很清楚

当我再次点击同一个按钮时(比如按钮),它的颜色已经改变了。必须将其更改回默认颜色,并且必须从数据库中删除数据

我该怎么做。。。? 1.如何获取单击按钮的值。 2.如何将更改后的颜色恢复为默认颜色;重新单击按钮后

请建议我

这是按钮代码

holder.b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (clicked) {
                    holder.b1.setBackgroundResource(R.drawable.like_icon_hover);
                } else {
                    holder.b1.setBackgroundResource(R.drawable.like_icon);
                }
                clicked = true;
            }
        });

您可以为listview使用自定义适配器(它有自己的layout.xml),并且可以在其中设置clicklistener

你可以改变颜色或你想要的。事实上,我确实有你想要的项目。如果你做不到,我会放一些链接。

试试这个链接:

,

解决这个问题实际上比我想象的要容易。您只需在自定义适配器的getView()方法中为正在使用的按钮添加一个setOnClickListener()。

尝试以下操作:

  • 按钮上使用
    setOnClickListener()
  • 例如

  • 假设您在登录时从db中获取数据,您可以检查likestatus并相应地设置按钮的颜色

  • 您需要向按钮添加一个侦听器,然后使用ValueAnimator可以更改按钮颜色,并在再次单击时将其反转

    下面是实现您的场景的一个简单而最好的方法。为列表项中的按钮添加onClick侦听器,如下所示。。我已经解释了每一行

        // set a default background color to the button
        placeHolder.likeButton.setBackgroundColor(Color.RED);
        placeHolder.likeButton.setOnClickListener(new View.OnClickListener() {
            ValueAnimator buttonColorAnim = null; // to hold the button animator
    
            @Override
            public void onClick(View v) {
                // first time this will be null
                if(buttonColorAnim != null){
                    // reverse the color
                    buttonColorAnim.reverse();
                    // reset for next time click
                    buttonColorAnim = null;
                    // add your code here to remove from database
                }
                else {
                    final Button button = (Button) v;
                    // create a color value animator
                    buttonColorAnim = ValueAnimator.ofObject(new ArgbEvaluator(), Color.RED, Color.BLUE);
                    // add a update listener for the animator.
                    buttonColorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                        @Override
                        public void onAnimationUpdate(ValueAnimator animator) {
                            // set the background color
                            button.setBackgroundColor((Integer) animator.getAnimatedValue());
                        }
                    });
                    // you can also set a delay before start
                    //buttonColorAnim.setStartDelay(2000); // 2 seconds
                    // start the animator..
                    buttonColorAnim.start();
                    // add your code here to add to database
                }
            }
        });
    
    这将在第一次单击时更改按钮的颜色,然后在下一次单击时恢复颜色。您还可以设置延迟以更改颜色


    注意:您必须根据您的逻辑设置默认按钮颜色。

    我已在列表视图中实现了自定义适配器,并以正确的方式成功获取数据。请提供一些有用的链接,以实现like按钮过程。那么您的自定义适配器有自己的布局吗?然后你们可以像按钮一样放在那个里,然后你们可以把onclick事件放在你们的adatper类holder.b1.setOnClickListener(newview.OnClickListener(){@Override public void onclick(View v){}});在点击事件中,应使用.position(x);因为它会告诉你你在哪一行,你可以手动拿着它,我的意思是你可以设置一个列表,其中包含哪些按钮被点击或没有被点击。它的大小与你的列表相同。长度()然后当一个人按下“点击类似按钮”时,你应该这样设置你的列表:我的列表[mylist.get(position)]=1如果它是1,则单击它,然后检查它,就像我在列表视图中实现了自定义适配器一样,并以正确的方式成功获取数据。我怎样才能发现“喜欢”按钮是否被单击。当用户再次单击此按钮时,我能做什么…怎样才能将按钮单击回其原始阶段…请参阅我的答案。如果不行,请告诉我。你能解释一下这条线怎么办吗最终按钮=(按钮)v`先生,请帮个忙,
                @Override
                public void onClick(View view) {
                    if(!check)
                    {
    
                        personViewHolder.img_like_job.setImageResource(R.drawable.ic_thumbsup_blue);
                        check = true;
                    }
                    else
                    {
                        personViewHolder.img_like_job.setImageResource(R.drawable.ic_thumbsup);
                        check = false;
    
                    }
                }
    
                @Override
                public void onClick(View view) {
                    if(!check)
                    {
    
                        personViewHolder.img_like_job.setImageResource(R.drawable.ic_thumbsup_blue);
                        check = true;
                    }
                    else
                    {
                        personViewHolder.img_like_job.setImageResource(R.drawable.ic_thumbsup);
                        check = false;
    
                    }
                }