Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Android Implementing Designs for Android Updating Other GridViews Updating the Recipients Activity

Noah Schill
Noah Schill
10,020 Points

failing the second task

When I add set the mInvite visibility ti View.INVISIBLE in the else block, it fails the second task. Why is this?

InviteActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.ListView;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.TextView;

public class InviteActivity extends Activity {

    /*
     * Some code has been omitted for brevity!
     */
    public MenuItem mInviteMenuItem;
    public GridView mGridView;
    public TextView mEmptyTextView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.player_grid);

        mGridView = (GridView)findViewById(R.id.gridView);
        mGridView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        mGridView.setOnItemClickListener(mOnItemClickListener);
    }

    public OnItemClickListener mOnItemClickListener = new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            // Start by adding code in here!
          if(mGridView.getCheckedItemCount() == 0) {
              mInviteMenuItem.setVisibility(View.VISIBLE);
            }
          else {
             mInviteMenuItem.setVisibility(View.INVISIBLE);
          }

        }       
    };
}

1 Answer

Harry James
Harry James
14,780 Points

Hey Noah!

The problem actually lies in the first section. You want to check if the checked item count is greater than 0, not equal to 0.

Then, your code should pass the challenge :)

Hope it helps!

Ivan Sued
Ivan Sued
5,969 Points

I agree that it should work with your suggestion but i do not seem to get it working either with this logic.

if (mGridView.getCheckedItemCount() > 1){ mInviteMenuItem.setVisibility(View.VISIBLE); }

or using if (mGridView.getCheckedItemCount() > 1){ mInviteMenuItem.setVisible(true); }

Harry James
Harry James
14,780 Points

Hey Ivan Sued! You want to do it so that the if statement runs if the item count is greater than 0, you're trying to do greater than 1 :)

Ivan Sued
Ivan Sued
5,969 Points

Thanks Harry James . You are correct the 0 is what I needed. I think the problem is a bit confusing since the first question says more than 1 item selected but the second task is requiring at least one.

Noah Schill
Noah Schill
10,020 Points

Thank you Ivan and Harry! Helped me out a tonne!

Anthony Attard
Anthony Attard
43,915 Points

Very confusing as 1 passes the first task but fails the second one.

Harry James
Harry James
14,780 Points

Hey Anthony Attard.

I've just gave this a go and it's true, using greater than 1 will pass the first challenge, although it should not.

I'll tag Ben Jakuben here to see if this challenge could be updated to avoid such confusion.