how to implement simple like button in listview of each item

[亡魂溺海] 提交于 2019-12-10 04:07:02

问题


I have certain entries in my list view item. There I have a simple "like button" (not facebook like button). You can see the above mentioned SCREENSHOT; for the reference. The moment I click on like button; i want the like button color to be changed and the like button color should remain same(changed on like) when I'll login again.

Also, all the entries must get filled in Database with cust_id, bus_id, Offer_id using json; that I know very well.

When I again click on the same button(like button), whose color has been changed. It must be changed back to the default color and data must get removed from database.

How can I do this...? 1. How to get value of click button. 2. How to bring back the changed color to default; once the button has been re-clicked.

Plz suggest me...

this is button code

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;
            }
        });

回答1:


You need to add a listener to the button and using ValueAnimator you can change the button color and reverse it back when you click again.

Here is a simple and best approach to achieve your scenario. Add the onClick listener for the button in your list item like this.. I have explained each line ..

    // 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
            }
        }
    });

This will change the button color on your first click and then revert the color back on the next click. You can also set a delay to change the color.

Note: You have to set the default button color based on your logic.




回答2:


            @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;

                }
            }



回答3:


you can use custom adapter for your listview(it has own layout.xml),and you can set your clicklistener in it.

You can change color or what you want. Actually I did have project like you want.I put some link if you can t do it.




回答4:


Try this link:

ListView elements with multiple clickable buttons,

Using lists in Android (ListView) - Tutorial

The solution to this is actually easier than I thought. You can simply add in your custom adapter's getView() method a setOnClickListener() for the buttons you're using.




回答5:


Try following:

  1. use setOnClickListener() on the button.

eg.

viewHolder.imgVwFbLike.setOnClickListener(new View.OnClickListener() { 
   @Override public void onClick(View v) {
         // TODO :
         // 1. make webservice call to update like status (Assuming a web service call)
         // 2. Implement a callback for webservice call, to get the status of request.
            if(success) 
             a) change the colour of like btn. and insert the data in Db.
             b) Also maintain a column in db for likestatus(by default set it false).                 
            } 
        }
   );
  1. Assuming you are fetching the data from db when you login, you can check the likestatus and set the color of button accordingly.


来源:https://stackoverflow.com/questions/22961113/how-to-implement-simple-like-button-in-listview-of-each-item

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!