android - 如何访问每个 GridView 项的特定元素

标签 android android-gridview

我有一个 gridview,其中每个项目都有两个元素,第一个是图像,第二个是标题,标题在应用程序启动时是不可见的,但我在网格外有一个按钮查看当我单击它时,我想将项目标题的可见性更改为可见,我的问题是我无法访问 GridView 中每个项目的每个标题。当我在 Activity 中的独立按钮的 onClick 方法中设置标题 (TextView) 的可见性时,它仅更改 GridView 中第一个项目的可见性!

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

    Image1    Image2      Image3
    Title1    Title2      Title3

    Image4    Image5      Image6
    Title4    Title5      Title6

    Image7    Image8      Image9
    Title7    Title8      Title9


    ----------------------------
    SetVisibilityButton
    ____________________________        

我在 oncreate() Activity 中设置 GridView :

    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;
       }

为了从我的主要 Activity 中获取标题 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);

但是所有这些解决方案都只为 GridView 中的第一个元素设置可见性。

我花了很多时间解决这个问题,但我还没有找到解决方案,请问有人可以帮我解决吗 提前谢谢你

最佳答案

这很简单:

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);
    }
  }
}

关于android - 如何访问每个 GridView 项的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8944326/

相关文章:

android - 是否有可能在 Android 中获取特定字符串的引用名称

java - 保存底部导航栏 fragment 的 Activity 永远不会到达 fragment ,而是通过 FrameLayout 保存它们的 Activity

android - 创建像 pinterest 应用程序一样的 GridView

android - 在 GridView 中使用 scrollTo()

java - Android单列Gridview

android - 在 Debug模式下运行 Android 应用程序

android - 安装 APK INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 时出错 - Android

android - 如何设计进度条以使其看起来像 Material Design? (见图)

java - 引用和使用另一个类的数组

android - 如何从 GridView 中获取对象的 itemClick