Je reçois des données de la base de données et les affiche dans une variable GridView
fine. Mais je dois mettre un bouton séparé sous chaque texte affiché. Quand je clique sur le bouton, je dois faire des choses. Ici, j'ai utilisé un adaptateur de liste personnalisé pour récupérer les données de la base de données. Comment pourrais-je faire ça?
Mon code:
public class HomePage extends Activity {
private ArrayList<SingleElementDetails> allElementDetails=new ArrayList<SingleElementDetails>();
DBAdapter db=new DBAdapter(this);
String category, description;
String data;
String data1;
GridView gridview;
Button menu;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.homepage);
menu=(Button)findViewById(R.id.menus);
menu.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
gridview=(GridView)findViewById(R.id.gridview);
allElementDetails.clear();
db.open();
long id;
//id=db1.insertTitle1(category, description,r_photo);
Cursor cursor = db.getAllTitles1();
while (cursor.moveToNext())
{
SingleElementDetails single=new SingleElementDetails();
single.setCateogry(cursor.getString(1));
single.setDescription(cursor.getString(2));
single.setImage(cursor.getBlob(3));
allElementDetails.add(single);
}
db.close();
CustomListAdapter adapter=new CustomListAdapter(HomePage.this,allElementDetails);
gridview.setAdapter(adapter);
}
});
}
}
Mon customListAdapter:
import Java.io.ByteArrayInputStream;
import Java.util.ArrayList;
import Android.content.Context;
import Android.graphics.Bitmap;
import Android.graphics.BitmapFactory;
import Android.view.LayoutInflater;
import Android.view.View;
import Android.view.ViewGroup;
import Android.widget.BaseAdapter;
import Android.widget.ImageView;
import Android.widget.TextView;
public class CustomListAdapter extends BaseAdapter {
private ArrayList<SingleElementDetails> allElementDetails;
private LayoutInflater mInflater;
public CustomListAdapter(Context context, ArrayList<SingleElementDetails> results) {
allElementDetails = results;
mInflater = LayoutInflater.from(context);
}
public int getCount() {
return allElementDetails.size();
}
public Object getItem(int position) {
return allElementDetails.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
convertView = mInflater.inflate(R.layout.listview1, null);
ImageView imageview = (ImageView) convertView.findViewById(R.id.image);
TextView textview = (TextView) convertView.findViewById(R.id.category_entry);
TextView textview1 = (TextView) convertView.findViewById(R.id.description_entry);
textview.setText(allElementDetails.get(position).getCategory());
textview1.setText(allElementDetails.get(position).getDescription());
byte[] byteimage=allElementDetails.get(position).getImage();
ByteArrayInputStream imageStream = new ByteArrayInputStream(byteimage);
BitmapFactory.Options op=new BitmapFactory.Options();
op.inSampleSize=12;
Bitmap theImage= BitmapFactory.decodeStream(imageStream,null,op);
imageview.setImageBitmap(theImage);
return convertView;
}
}
Au lieu d'utiliser CustomListAdapter, vous devrez créer votre propre adaptateur qui étend BaseAdapter, créer une mise en page pour chaque élément de la grille (expand LinearLayout) de cette classe ayant votre textview puis un bouton.
Nice Tut:
Utilisez SimpleAdapter pour GridView. C'est le meilleur moyen de concevoir une vue de chaque élément.
Par exemple, http://wptrafficanalyzer.in/blog/listing-images-in-gridview-using-simple-adapter-in-Android/