user5371971
user5371971

Reputation:

Checked Item in GridView

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

Answers (1)

Marek Loose
Marek Loose

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

Related Questions