Reputation: 7014
I have few grid items. Depending on the flag, I want to disable some grid items
For example:
CallLost
. Others should be enabled.
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.
Upvotes: 4
Views: 1319
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
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