2011-03-16 17 views
7

estoy recibiendo datos de DB y se muestra en una vista de cuadrícula bien.pero tengo que poner un botón por separado debajo de cada texto que se muestra.Cuando hago clic en el botón., Tengo que hacer algunas cosas.Aquí utilicé un adaptador customList para recuperar datos de DB. ¿Cómo podría hacerlo?adaptador personalizado para gridview en android

Mi código ..

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

     } 
    }); 
    } 

}

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

}

+0

Por favor, ¿le importaría añadir el archivo XML de 'R.layout.listview1', así que puedo entender su ejemplo, tengo un caso similar. –

Respuesta

8

En lugar de utilizar CustomListAdapter, tendrá que crear su propio adaptador que extiende BaseAdapter, crea un diseño para cada elemento de la grilla (extiende LinearLayout) en thi s clase tiene su vista de texto y luego un botón.

Niza Tut:

Custom GridView

+0

Gracias por su respuesta ... He actualizado mi pregunta con mi código CustomListAdapter ... que extiende BaseAdapter también ... ¿Aquí dónde puedo agregar esos botones? – sanjay

+0

¡Genial! Lo he hecho ... trabajando bien ... Muchas gracias ... – sanjay

+1

El tutorial en un enlace está muy desactualizado, para aquellos que no han notado su respuesta de 2011 como yo;) – Srneczek

Cuestiones relacionadas