wie der Zugriff auf ein bestimmtes element eines jeden grid-Ansicht Element
Ich habe ein gridview, in dem es zwei Elemente in jedem seiner Elemente, das erste ist ein Bild und das zweite ist ein Titel, der Titel ist unsichtbar in den Start der Anwendung, aber ich habe einen button außerhalb der grid-Ansicht, wenn ich drauf klicke, möchte ich, um die Sichtbarkeit der Titel der Elemente, um sichtbar zu werden, mein problem ist, dass ich nicht auf jeden Titel der jedes Element in der grid-Ansicht. Wenn ich die Sichtbarkeit der Titel (TextView) in der onClick-Methode der unabhängigen Taste in meine Tätigkeit, es ändert sich die Sichtbarkeit NUR für das ERSTE Element in der grid-Ansicht!
Diese Skizze darstellen mein interface, so dass die Titel unsichtbar in der Anfang, aber wenn ich auf "SetVisibilityButton", ich will, um Sie zu Sehen :
Image1 Image2 Image3
Title1 Title2 Title3
Image4 Image5 Image6
Title4 Title5 Title6
Image7 Image8 Image9
Title7 Title8 Title9
----------------------------
SetVisibilityButton
____________________________
Ich die raster-Ansicht in meiner oncreate() Tätigkeit :
favorGrid = (GridView) findViewById(R.id.favorGrid);
favorGrid.setAdapter(adapter);
In meinem ImageAdapter Klasse, das ist meiner getView() Methode :
@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;
}
Den Titel textview von meiner Haupttätigkeit und seine Sichtbarkeit, habe ich versucht :
TextView title = (TextView) findViewById(R.id.title);
title.setVisibility(View.VISIBLE);
und ausprobiert :
//gv is the gridview (R.id.gridview)
TextView title = (TextView)gv.findViewById(R.id.title);
title.setVisibility(View.VISIBLE);
und ausprobiert :
LinearLayout layout = (LinearLayout) findViewById(R.id.gridLayout);
TextView title = (TextView)layout.findViewById(R.id.title);
title.setVisibility(View.VISIBLE);
Aber alle diese Lösungen setzen die Sichtbarkeit nur für das erste element in der grid-Ansicht.
Verbrachte ich viel Zeit mit diesem problem, aber ich noch keine Lösung gefunden, hat jemand mir helfen könnte es zu beheben bitte
vielen Dank im Voraus
ok, ich werde meinen Beitrag Bearbeiten
InformationsquelleAutor Alaoui Ghita | 2012-01-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist einfach:
favorGrid = (GridView) findViewById(R. id.favorGrid); favorGrid.setAdapter(adapter); final int size = favorGrid.getChildCount(); for(int i = 0; i < Größe; i++) { ViewGroup gridChild = (ViewGroup) favorGrid.getChildAt(i); int childSize = gridChild.getChildCount(); for(int k = 0; k < childSize; k++) { if( gridChild.getChildAt(k) ein TextView ) { gridChild.getChildAt(k).setVisibility(View.SICHTBAR); } } }
Super!!! es funktioniert ! Ich danke Ihnen sehr, aber ich habe noch eine Frage: wenn ich zwei textview in jedem Element des grid-Ansicht, wie kann ich genaue Hexe textview möchte ich aktualisieren ? denn hier : "gridChild.getChildAt(k) ein TextView" Sie identifizieren nur die Art der Ansicht (TextView), und nicht eine bestimmte TextView (wenn wir mehr als nur eine)
verwenden Sie auf das Kind "getId()", können Sie vergleichen die id R. id.YOUR_SPECIFIED_ID, um zu bestimmen, ob seine Ansicht, die Sie suchen 🙂
Ghita. Wenn Sie denken, dass die Antwort Ihnen geholfen hat, sollten Sie es akzeptieren. so wird es ermutigen, ppl beantworten Ihre Fragen in der Zukunft.
InformationsquelleAutor Andreas
Den richtigen Weg, um die Ansicht des listView-für eine bestimmte position ist der nächste:
InformationsquelleAutor SerSánGal