Search code examples
androidgridviewadapteronitemclicklistener

Making gridview items clickable one by one


Level Selection GridView Image

enter image description here

I need to make Level 1 clickable and rest non clickable and when user clicks Level 1 it should make Level 2 clickable and rest non-clickable and so on so forth. Also if user is at Level 5 gridview should be clickable from level 1 to 4

myAdapter = new MyCustomAdapter(getActivity());
    gridView.setAdapter(myAdapter);


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

               //do something

                       }

private class MyCustomAdapter extends BaseAdapter {

    private LayoutInflater mInflater;

    public MyCustomAdapter(Context context) {
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        GridObject object = my.get(position);
        GridObject revers=reverseobj.get(position);
        ViewHolder holder;

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.list_item_icon_set, null);
            holder = new ViewHolder();
            holder.text = (ImageView) convertView.findViewById(R.id.text);
            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        if (check.get(position).equals("true"))
        {
            holder.text.setImageResource(revers.getName());
        }
        else {
            holder.text.setImageResource(object.getName());

        }
        return convertView;
    }

    @Override
    public int getCount() {
        return my.size();
    }

    @Override
    public Object getItem(int position) {
        return position;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }
}


public class GridObject extends ArrayList<GridObject> {

private int image;
private int state;

public GridObject(int name, int state) {
    super();
    this.image = name;
    this.state = state;
}

public int getName() {
    return image;
}

public void setName(int name) {
    this.image = name;
}

public int getState() {
    return state;
}

public void setState(int state) {
    this.state = state;
}   
}

Solution

  • I have Used a Simple Check list boolean = gridview items and It Works....By Default I have set the first value true and the rest value false.......

               gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                  @Override
                  public void onItemClick(AdapterView<?> parent, View view, int position, long 
            id)
            {
    
    
                   if (clickcheck.get(position).equals(true)) {
                     //complete some task then
    
                          position=position+1;
                    clickcheck.remove(position);
                    clickcheck.add(position,true);
                   }
                   else
                   {
                       Toast.makeText(getActivity(), "Click On Level "+position, Toast.LENGTH_SHORT).show();
    
    
                   }
    

    `