使GridView中的ImageButton不可见

时间:2013-12-04 03:11:43

标签: android gridview

我需要知道如何访问GridView中的单个元素,以便我可以设置它的可见性。 在MovementSelectionFragment中查找所有大写注释。谢谢

public class MovementSelectionFragment extends Fragment{
private static final int REQUEST_NEW_MOVEMENT = 0;

private GridView mGridView;
private ArrayList<Integer> movements = new ArrayList<Integer>();
/*
 * This array allows the user to select multiple workouts at once. 
 * It doesn't need to be reinstantiated every time the user backs up
 * to this view.
 */

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

 @Override 
 public View onCreateView(LayoutInflater inflater, ViewGroup parent,
            Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.movement_selection, parent, false);

    mGridView = (GridView)v.findViewById(R.id.gridView);
    mGridView.setAdapter(new ImageAdapter(v.getContext()));

    //*************************************************************//
    mGridView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View v, int position,
                long id) {

            // Sending image id to WODListActivity
            Intent movementIntent = new Intent(v.getContext(),
                    WODListActivity.class);
            movements.add(position); // Add the position to the movements
                                        // array.
            // show contents of integer array that holds the positions of
            // the movements selected so far (use this to set button
            // visibility)
            for (int i = 0; i < movements.size(); i++) {
                Toast.makeText(v.getContext(),
                        Integer.toString(movements.get(i)),
                        Toast.LENGTH_SHORT).show();
                // THIS KILLS THE ENTIRE VIEW (OBV)
                // I NEED IT TO ONLY KILL THE SELECTED ELEMENT
                mGridView.setVisibility(View.GONE);

            }
            movementIntent.putExtra(WODListFragment.NEW_MOVE_ADDED,
                    movements);
            startActivityForResult(movementIntent, REQUEST_NEW_MOVEMENT);
        }

    });//*************************************************************//

    return v;
 } 

 @Override
 public void onActivityResult(int requestCode, int resultCode, Intent data) {
     if (resultCode != Activity.RESULT_OK){ 
         return;
     }
 }

}

这是我正在使用的ImageAdapter类

public class ImageAdapter extends BaseAdapter {
private Context mContext;

// Keep all Images in array
public Integer[] mThumbIds = {
        R.drawable.push_up_icon, R.drawable.pull_up_icon,
        R.drawable.burpees, R.drawable.air_squats,
        R.drawable.hspu_icon, R.drawable.mtn_climbers,
        R.drawable.run_icon, R.drawable.jump_rope,
        R.drawable.lunges, R.drawable.box_jumps,    
};

// Constructor
public ImageAdapter(Context c){
    mContext = c;
}

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

@Override
public Object getItem(int position) {
    return mThumbIds[position];
}

@Override
public long getItemId(int position) {
    return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

    imageView.setTag(new Integer(position));

    return imageView;
}

}

也许需要在getView()中修改某些内容?

1 个答案:

答案 0 :(得分:0)

替换:

mGridView.setVisibility(View.GONE);

...与

v.setVisibility(View.GONE);