各アイテムに2つの要素があるグリッドビューがあります。1つ目は画像で、2つ目はタイトルです。タイトルはアプリケーションの起動時に表示されませんが、グリッドビューの外側にボタンがあります。それをクリックすると、アイテムのタイトルの表示を変更して表示したいのですが、グリッドビューで各アイテムの各タイトルにアクセスできないという問題があります。アクティビティの独立ボタンの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 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 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);
}