如何访问每个网格视图项目的特定元素

我有一个GridView,其中每个项目有两个元素,第一个是图像,第二个是标题,标题在应用程序启动时是不可见的,但是我有一个网格视图外的button,当我点击它,我想改变项目的标题的可见性变得可见,我的问题是,我不能访问网格视图中的每个项目的每个标题。 当我在我的活动中的独立button的onClick方法中设置标题(TextView)的可见性时,它将仅改变网格视图中第一项的可见性!

这个草图代表了我的界面,所以标题在开始时是不可见的,但是当我点击“SetVisibilityButton”时,我想将它们设置为Visible:

Image1 Image2 Image3 Title1 Title2 Title3 Image4 Image5 Image6 Title4 Title5 Title6 Image7 Image8 Image9 Title7 Title8 Title9 ---------------------------- SetVisibilityButton ____________________________ 

我在我的oncreate()活动中设置了网格视图:

  favorGrid = (GridView) findViewById(R.id.favorGrid); favorGrid.setAdapter(adapter); 

在我的ImageAdapter类中,这是我的getView()方法:

  @Override public View getView(int position, View convertView, ViewGroup parent) { View MyView = convertView; /*we define the view that will display on the grid*/ //Inflate the layout LayoutInflater li = getLayoutInflater(); MyView = li.inflate(R.layout.favor_item, null); // Add The Text!!! TextView tv = (TextView)MyView.findViewById(R.id.title); tv.setText(mTitles[position]); // Add The Image!!! ImageView iv = (ImageView)MyView.findViewById(R.id.favor_item_image); iv.setImageResource(mThumbIds[position]); return MyView; } 

为了从我的主要活动中获得标题textview并设置他的知名度,我试着:

  TextView title = (TextView) findViewById(R.id.title); title.setVisibility(View.VISIBLE); 

并尝试:

  // gv is the gridview (R.id.gridview) TextView title = (TextView)gv.findViewById(R.id.title); title.setVisibility(View.VISIBLE); 

并尝试:

  LinearLayout layout = (LinearLayout) findViewById(R.id.gridLayout); TextView title = (TextView)layout.findViewById(R.id.title); title.setVisibility(View.VISIBLE); 

但是,所有这些解决scheme仅为网格视图中的第一个元素设置了可见性。

我花了很多时间,但我还没有find解决scheme,有没有人可以帮我解决这个问题,请提前谢谢

Solutions Collecting From Web of "如何访问每个网格视图项目的特定元素"

这很简单:

 GridView mGridView (Your object instance) final int size = mGridView.getChildCount(); for(int i = 0; i < size; i++) { ViewGroup gridChild = (ViewGroup) mGridView.getChildAt(i); int childSize = gridChild.getChildCount(); for(int k = 0; k < childSize; k++) { if( gridChild.getChildAt(k) instanceof TextView ) { gridChild.getChildAt(k).setVisibility(View.GONE); } } } 

下一个获得listView视图的正确方法是:

 View viewItem = list.getChildAt(position); if (viewItem != null) { TextView text = (TextView) viewItem.findViewById(R.id.item); }