2013-12-04 5 views
0

Мне нужно знать, как получить доступ к отдельному элементу в GridView, чтобы я мог установить его видимость. Ищите комментарий всех шапок в элементе MovementSelectionFragment. БлагодаряСделать ImageButton в GridView невидимым

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()?

+0

да именно в методе GetView переменная позиции показывает, какую сетку позиции вы в настоящее время работаете и в этом методе вы можете делать все, что вы хотеть. – jyomin

ответ

0

Заменить:

mGridView.setVisibility(View.GONE); 

с ...

v.setVisibility(View.GONE); 
+0

yep, очевидно. ха-ха, дангит. спасибо, работал как шарм – stormyBrain

Смежные вопросы