Je suis nouveau à Android Développement et suivez les tutoriels disponibles sur le site Android Site Web. Je suis actuellement sur la section des tutoriels pour les vues, plus particulièrement celui de celui-ci. Pour les vues de la grille: Bonjour, Tutoriel de la grille .
J'ai du mal à comprendre comment les vues sont faites via un adaptateur. Je comprends que vous devez remplacer la méthode GeveView () de votre classe Adapter et dans cette méthode est l'endroit où vous définissez la manière dont vos points de vue sont configurés. Ce que je ne comprends pas, c'est où GeveView () est-il appelé? Peut-être que j'ai un mauvais type de mentalité ici, mais dans le code ci-dessous (le tutoriel de la grille), je ne vois aucun appels à GeveView () (ou à toute autre chose utilisée dans la classe d'adaptateur telle que getcount ())) .
Main.xml
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:id="@+id/gridview"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:columnWidth="90dp"
Android:numColumns="auto_fit"
Android:verticalSpacing="10dp"
Android:horizontalSpacing="10dp"
Android:stretchMode="columnWidth"
Android:gravity="center" />
Start.java
package com.examples.hellogridlayout;
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.AdapterView;
import Android.widget.GridView;
import Android.widget.Toast;
import Android.widget.AdapterView.OnItemClickListener;
public class Start extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GridView gridview = (GridView)findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener(){
public void onItemClick(AdapterView<?> parent,View v, int position, long id){
Toast.makeText(Start.this, "" + position,Toast.LENGTH_SHORT).show();
}
});
}
}
Imageadapter.java
package com.examples.hellogridlayout;
import Android.content.Context;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.BaseAdapter;
import Android.widget.GridView;
import Android.widget.ImageView;
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { // if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7
};
}
En définissant un adaptateur, vous indiquez à GridView d'aller chercher des vues de l'adaptateur pour remplir toutes les grilles. Donc, getView
est appelé intérieurement par GridView pour combler la mise en page.
C'est pourquoi tous les adaptateurs implémentent Adapter
interface Pour que tout adaptateur puisse demander à l'adaptateur.
Adapter.getView
est appelé à l'intérieur ObtainView
méthode, héritée de GridView
classe parente AbsListView
, avec des objets Scrapview sont passés lorsqu'ils sont disponibles:
child = mAdapter.getView(position, scrapView, this);
Alors ObtainView
est mis en œuvre dans GridView.onMeasure
directement mais aussi dans plusieurs autres rappels invoqués GridView.layoutChildren
, y compris hérité onTouchEvent
méthode qui gère les défilements, les flanques et autres navigations tactiles.