Nun, ich denke, ich kann Ihnen Beispiele für Code geben ... Zuerst habe ich AsymmetricGridView hinzugefügt.
compile 'com.felipecsl.asymmetricgridview:library:2.0.1'
Ich verwende this guide. Es stellte sich heraus über einen solchen Zusatz-Adapter:
ListAdapter ia = new PreviewsAdapter(mContext, currentPreviews).setAdsWidth(numRows);
gridListView.setRequestedColumnWidth(Utils.dpToPx(mContext, 80));
gridListView.setAllowReordering(true);
AsymmetricGridViewAdapter asymmetricAdapter =
new AsymmetricGridViewAdapter<>(mContext, gridListView, ia);
gridListView.setAdapter(asymmetricAdapter);
gridListView.setOnItemClickListener(gridviewOnItemClickListener);
Achten Sie auf numRows. Bevor wir eine physische Ansicht hinzufügen, wissen wir nicht, wie viel Spalten wir haben werden. Und wir können nicht wissen, wie viele Zellen (breit) Werbung aufnehmen. Es ist möglich, dass Sie die Standardmethode AsymmetricGridView verwenden können.
ich diesen schrecklichen Code zu verwenden hatte ( Darin meine Konstanten verstopft.
Display display = mContext.getWindowManager().getDefaultDisplay();
Point size = new Point();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2){
display.getSize(size);
} else {
size.set(display.getWidth(), display.getHeight());
}
final int mSize;
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
mSize = Math.min(size.x, size.y);
} else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
mSize = Math.max(size.x, size.y) - Math.min(size.x, size.y);
} else {
mSize = Math.min(size.x, size.y);
}
int numRows = Math.round((float) mSize/(float) Utils.dpToPx(mContext, 100));
// 80 width cell item + 20 padding
die Magie in den Adapter Alle PreviewsAdapter erstreckt BaseAdapter
Bestimmen Sie, wo es ist Werbung. Ich möchte die Mitte
adsId = currentPreviews.size()/2;
Forge eine Reihe von Einträgen Unsere Einträge nums + ad
public int getCount() {
return currentPreviews.size() + 1;
}
Jetzt werden wir das Objekt zurückgeben. Es sind entweder unsere Mitglieder oder Werbung.
public Object getItem(int position) {
if(adsId != position) {
if(position >= adsId) {
position-=1;
}
return currentPreviews.get(position);
} else {
return new AdsItem(this.numRows, 1);
}
}
Unser Objekt muss AsymmetricItem implementieren. Werbung auch. Hier ist ein Beispiel für die Objektklassenwerbung.
getRowSpan, getColumnSpan die Breite und Höhe des Objekts bestimmen View in cells.
Und hier ist die Methode Ansicht zu erhalten:
public View getView(int position, View convertView, ViewGroup parent) {
if(adsId != position) {
ImageView imageView;
if (convertView == null) {
imageView = new SquareImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(GridView.LayoutParams.MATCH_PARENT, GridView.LayoutParams.MATCH_PARENT));
imageView.setPadding(10, 10, 10, 10);
} else {
imageView = (SquareImageView) convertView;
}
AvatarPart ap = (AvatarPart) getItem(position);
Bitmap b = imgs.get(ap.getFile());
imageView.setImageBitmap(b);
imageView.invalidate();
return imageView;
} else {
String adId = mContext.getResources().getString(R.string.add_id);
AdView mAdView = new AdView(mContext);
mAdView.setPadding(0, 15, 0, 15);
mAdView.setAdSize(AdSize.BANNER);
mAdView.setAdUnitId(adId);
AdRequest adRequest = new AdRequest.Builder()
.build();
if(mAdView.getAdSize() != null)
mAdView.loadAd(adRequest);
return mAdView;
}
}
Aber ich bin nicht sicher, über diese Linie:
imageView = (SquareImageView) convertView;
Ich weiß nicht, ob AdView dorthin zu gelangen. Aber solange es nicht kaputt ist: D
Um mit Klicks umzugehen musste eine andere Methode schreiben.
public AvatarPart getItemWithoutAds(int position) {
if(position == adsId) return null;
if(position >= adsId) {
position-=1;
}
return currentPreviews.get(position);
}
Dies ist sicherlich nicht der schönste Code, aber es funktioniert. Ergebnis: ![enter image description here](https://i.stack.imgur.com/4m0dQ.png)
nicht die einzige Show in einer Zelle anstatten Strecke von der Seite wie im Bild oben zu Seite? – Pankaj
können Sie mehr klären. Adview können Sie Breite und Höhe einstellen – virendrao
Wenn Sie das Bild betrachten, sehen Sie ein Bild mit dem Titel slash. Davon rede ich. Wie zeige ich diese Anzeige zwischen den normalen Anzeigen an? – Pankaj