Hi there,

I searched a lot and all the thread i viewed isn't solving my problem. I don't what's wrong with my code.
First of all, i am kinda new to android programming as i just recently move from web programming to android programming.

I have a listview and it's scrolable. I have few listview items and it's pulled from database. My problem is, each listview items have a button and i've setOnclickListener to the button inside getView. Now let's say there's 5 items and i tap on button for item number 1, the position is 0 and when i scroll to the end of the list, i can see the button for item number 5 is clicked. When i scroll till middle of the list, sometimes the button randomly clicked and i can see from my logcat, the particullar button's position is 0. How come?

Here is my getView' code

public View getView(final int position, View convertView, ViewGroup parent) {

            View v = convertView;

            if (v == null) {
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.newsfeed_layout, parent, false);
            }

            final Button btnLike = (Button) v.findViewById(R.id.buttonLike);

            btnLike.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                        String buttonText = btnLike.getText().toString();

                        if(buttonText.equals("LIKE")){
                            Toast.makeText(postedItems.this, "Liked This item" + position, Toast.LENGTH_SHORT).show();
                            btnLike.setPadding(4,0,12,0);
                            btnLike.setText("UNLIKE");
                            btnLike.setTextColor(Color.parseColor("#ffffff"));
                            btnLike.setBackgroundResource(R.drawable.likedredbutton);
                        }else if(buttonText.equals("UNLIKE")){
                            Toast.makeText(postedItems.this, "Unlike This Item" + position, Toast.LENGTH_SHORT).show();
                            btnLike.setPadding(4,0,20,0);
                            btnLike.setText("LIKE");
                            btnLike.setTextColor(Color.parseColor("#737373"));
                            btnLike.setBackgroundResource(R.drawable.cornerstyledbutton);
                        }
                }
            });

            return v;
        }

Recommended Answers

Can you explain why you are trying to manipulate the same button which you just did click?
From what you are doing it is look like you are just changing selection state that should be managed from button xml you can read about it here

Jump to Post

All 2 Replies

Hey, Thanks for the reply. An user able to like an item and the same user also able to unlike or dislike the item which they've liked. I solved the issue with a like flag to determine if the specific button is clicked or not and from there i am able to develop my code logic.

I know that i can manage it from xml but i want it to be done dynamically by codes. Thanks by the way. :)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.20 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.