Reputation:
I want to check every item which I click in GridView , after I keep hold on a picture and start onItemCheckedStateChanged.. I mean I want to change programatically every background of the each image I would check, and I don't know how... Here is my GridViewAdapter :
public class GridViewAdapter extends BaseAdapter {
// Declare variables
ImageView image;
private Activity activity;
private String[] filepath;
private String[] filename;
private static LayoutInflater inflater = null;
public GridViewAdapter(Activity a, String[] fpath, String[] fname) {
activity = a;
filepath = fpath;
filename = fname;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return filepath.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.gridview_item, null);
// Locate the TextView in gridview_item.xml
TextView text = (TextView) vi.findViewById(R.id.text);
// Locate the ImageView in gridview_item.xml
image = (ImageView) vi.findViewById(R.id.grid_image);
// Set file name to the TextView followed by the position
File file = new File(filepath[position]);
Picasso.with(activity).load(file).placeholder(R.drawable.rtrt).fit().centerCrop().into(image);
// Decode the filepath with BitmapFactory followed by the position
// Set the decoded bitmap into ImageView
// image.setImageBitmap(bmp);
return vi;
}
}
And here is the main activity onItemCheckedStateChanged :
public class MultiChoiceModeListener implements
GridView.MultiChoiceModeListener {
@Override
public void onItemCheckedStateChanged(android.view.ActionMode mode, int position, long id, boolean checked) {
selectCount = grid.getCheckedItemCount();
int checkedItemPosition = grid.getCheckedItemPosition();
switch (selectCount) {
case 1:
mode.setSubtitle("One picture selected");
break;
default:
mode.setSubtitle("" + selectCount + " pictures selected");
break;
}
}
@Override
public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {
mode.setTitle("Select pictures");
mode.setSubtitle("One picture selected");
return true;
}
@Override
public boolean onPrepareActionMode(android.view.ActionMode mode, Menu menu) {
return true;
}
@Override
public boolean onActionItemClicked(android.view.ActionMode mode, MenuItem item) {
return true;
}
@Override
public void onDestroyActionMode(android.view.ActionMode mode) {
}
}
I'm stucked for 2 days on this issue , any help will be apreciated!!! Thanks!
Upvotes: 0
Views: 83
Reputation: 1185
Make sure for each ImageView or TextView you want to replace with different parameters you need to have their replacement set visibility for “invisible”, so when you click on Item it would change for “visible”.
XML objects would look like this:
<ImageView
android:id="@+id/grid_image"/>
<ImageView
android:id="@+id/check_grid_image"
android:visibility="invisible"/>
GridViewAdapter:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.inflate(R.layout.gridview_item, null);
holder = new ViewHolder();
holder.image = (ImageView)convertView.findViewById(R.id.grid_image);
holder.checkImage = (ImageView)convertView.findViewById(R.id.check_grid_image);
convertView.setTag(holder);
}
GridView gridView = (GridView)parent;
if (gridView.isItemChecked(position)) {
holder.checkImage.setVisibility(View.VISIBLE);
}
else {
holder.checkImage.setVisibility(View.INVISIBLE);
}
// Picasso omitted
return convertView;
}
private static class ViewHolder {
ImageView image;
ImageView checkImage;
}
ActivityMain:
protected AdapterView.OnItemClickListener mOnItemClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ImageView checkImage = (ImageView)view.findViewById(R.id.check_grid_image
if (mGridView.isItemChecked(position)) {
// Action when Item checked
checkImage.setVisibility(View.VISIBLE);
}
else {
// Reverse Action
checkImage.setVisibility(View.INVISIBLE);
}
}
};
This is working in my project, but let me know if that works for you too!
Upvotes: 1