2011-03-16 54 views
7

DB'den veri alıyorum ve bir gridview fine.de görüntülenen her metnin altında ayrı bir düğme koymam gerekiyor. Düğmeyi tıklattığımda, bazı şeyler yapmam gerekiyor. DB'den alınan veriler için customList bağdaştırıcısı kullandım. Bunu yapabilir miyim?androidde greyview için özel adaptör

Kodum ..

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

     } 
    }); 
    } 

}

Benim 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

Eğer R.layout.listview1' 'xml dosyası eklemek için sorun olur Lütfen, bu yüzden seni örnek anlayabiliyorum. –

cevap

8

yerine CustomListAdapter kullanmak yerine, kendi adaptörü oluşturmak zorunda olacak BaseAdapter'ı genişletir, her kılavuz öğesi için bir düzen oluşturur (LinearLayout'u genişletir) s sınıfı, sizin metin görüntünüzü bir düğmeye basar.

Güzel Tut: GridView

Custom GridView

+0

Ur yanıtı için teşekkürler ... Benim CustomListAdapter kodumla sorumu güncelledim.Ben de BaseAdapter'ı genişletir ... Bu düğmeleri nereye ekleyebilirim? – sanjay

+0

Harika! Ben yaptım ... iyi çalışıyor ... Çok teşekkürler .. – sanjay

+1

Bir bağlantıdaki öğretici çok eskidir - benim gibi 2011 cevabı fark etmemiş olanlar için;) – Srneczek

İlgili konular