Piraba
Piraba

Reputation: 7014

How to disable grid item when activity is loaded

I have few grid items. Depending on the flag, I want to disable some grid items

For example:

& I have done grid items using:

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

        Bundle bundle = this.getIntent().getExtras();
        retailerName = bundle.getString("RetailerName");
        relailerCode = bundle.getString("RetailerCode");

        isDefault = bundle.getBoolean("isDefault", false);
        routeCode = bundle.getString("RouteCode");

        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

        SharedPreferences myRoutes = this.getSharedPreferences("myDefalutRoute",MODE_PRIVATE);
        defaultRoutePositions = myRoutes.getInt("defaultRoutePositions", -1);

        retailerGrid = (GridView)findViewById(R.id.retailergridview);
        retailerGrid.setAdapter(new RetailerImageAdapter(this));
        retailerGrid.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position,long id) {
                if (position == 0) {
                    Intent i = new Intent(getBaseContext(), RetailerOrderActivity.class);
                     Bundle bundle = new Bundle();
                     bundle.putString("Activity", "RetailerOptionActivity");
                     bundle.putString("RetailerName", retailerName);
                     bundle.putString("RetailerCode", relailerCode);
                     i.putExtras(bundle);
                    View vi = SalesActivityGroup.group.getLocalActivityManager().startActivity("RetailerOrderActivity", i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
                    SalesActivityGroup.group.replaceView(vi);

                }
                if (position == 2) {
                    Intent i = new Intent(getBaseContext(), CallLostActivity.class);
                     Bundle bundle = new Bundle();
                     bundle.putString("Activity", "RetailerOptionActivity");
                     bundle.putString("RetailerName", retailerName);
                     bundle.putString("RetailerCode", relailerCode);
                     i.putExtras(bundle);
                    View vi = SalesActivityGroup.group.getLocalActivityManager().startActivity("RetailerOrderActivity", i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
                    SalesActivityGroup.group.replaceView(vi);
                }
            }
        });

        Button reOpCancel = (Button)findViewById(R.id.reOpCancel);
        reOpCancel.setOnClickListener(new OnClickListener() {
               public void onClick(View v) {

                    Intent i = new Intent(getBaseContext(), ListRetailerActivity.class);
                    Bundle bundle = new Bundle();
                    bundle.putString("RetailerName", retailerName);
                    bundle.putString("RetailerCode", relailerCode);
                    bundle.putInt("positon", defaultRoutePositions);
                    bundle.putString("RouteCode", routeCode);
                    i.putExtras(bundle);
                    View vi = SalesActivityGroup.group.getLocalActivityManager().startActivity("ListRetailerActivity", i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
                    SalesActivityGroup.group.replaceView(vi);
                    isDefault = false;
                    //defaultRoutePositions = -1;
               }
        });
    }

    public void onCancelAction(View view){
        SalesActivityGroup.group.back();  
        return;
    }

    public void onCompleteAction(View view){
        SalesActivityGroup.group.back();  
        return;
    }

    public class RetailerImageAdapter extends BaseAdapter{
        Context MyContext;

        public RetailerImageAdapter(Context _MyContext){
            MyContext = _MyContext;
        }

        public int getCount() {
            return mThumbIds.length;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            View v;
            if(convertView==null){
                LayoutInflater li = getLayoutInflater();
                v = li.inflate(R.layout.grid_item, null);
                TextView tv = (TextView)v.findViewById(R.id.grid_item_text);
                tv.setText("Profile "+position);
                ImageView iv = (ImageView)v.findViewById(R.id.grid_item_image);
                tv.setText(names[position]);
                iv.setImageResource(mThumbIds[position]);
            }
            else
            {
                v = convertView;
            }
            return v;
        }

        public Object getItem(int arg0) {
            return null;
        }

//      public boolean  areAllItemsEnabled() {
//          return false;
//      }
//
//
//      public boolean  isEnabled(int position) {
//          if(isDefault){
//              if(position == 0) return true;
//              if(position == 1) return true;
//              if(position == 3) return true;
//              
//          }else{
//              if(position == 2) return false;
//          }
//          return false;
//      }


        public long getItemId(int arg0) {
            return 0;
        }

        // references to our images
        private Integer[] mThumbIds = { 
                R.drawable.one, R.drawable.two,
                R.drawable.five, R.drawable.four, 
                R.drawable.eight,R.drawable.seven,
                R.drawable.seven,R.drawable.seven,
                R.drawable.seven
            };
        private String[] names = {
                "Order","Order Flow",
                "Call Lost","Collection",
                "Cancel Invoice","Survey",
                "Complain","Customer Card",
                "ComInv"
        };
    }
}

Please any idea regarding this. I have seen this but it disables all items, just specific ones.

Upvotes: 4

Views: 1319

Answers (2)

sandeepmaaram
sandeepmaaram

Reputation: 4241

put below code before return view in getView() method in RetailerImageAdapter class

if(isDefault){
v.setClickable(true);
} else{
v.setClickable(false);
}
return v;

Note: check vice versa depending on your condition

Upvotes: 0

Paul Burke
Paul Burke

Reputation: 25584

I'm assuming that when you say "disable" you intend to make the grid item un-clickable (but still visible) -- as in View.setEnabled().

Try this in the RetailerImageAdapter.getView(), just before the return;

if (isDefault && position == 2) {
    v.setEnabled(false);
} else if (!default) {
    if (position == 0 | position == 1 | position == 3) {
        v.setEnabled(false);         
    }
}

I'm not positive this will work (I have not tested it), but it theoretically should.

Upvotes: 2

Related Questions