为GridView控件在Android的自定义适配器

人气:1,250 发布:2022-09-10 标签: android gridview onclick

问题描述

即时从数据库获取数据,并在GridView fine.but我需要把每个文本下面一个单独的按钮displayed.When我按一下按钮显示的,我已经做了一些stuff.Here我用customList适配器检索从DB.How数据可能我做到这一点?

im getting data from DB and displayed in a gridview fine.but i need to put a separate button below each text displayed.When i click the button.,i've to do some stuff.Here i used customList adapter for retrieved data from DB.How could i do that?

我的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);

      }
  });
    }

}

我的customListAdapter ..

My 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;
}    

}

推荐答案

,你必须创建自己的适配器,扩展了BaseAdapter,在这个类为每个网格项目(扩展的LinearLayout)布局有你TextView的那么一个按钮。

Instead of using CustomListAdapter, you will have to create your own adapter that extends BaseAdapter, create a layout for each grid item (extend LinearLayout) in this class have your textview then a button.

尼斯啧:

Custom GridView控件

227