How to disable grid item when activity is loaded

匿名 (未验证) 提交于 2019-12-03 01:22:02

问题:

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

For example:

  • Grid items are Order,CallLost,Payment. If boolean status = true, then I want to disable CallLost. Others should be enabled.
    • If boolean status = false, then I want to disable Order,Payment & CallLost

& 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.

回答1:

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.



回答2:

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



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