ArrayList <eigener Klasse> to CustomAdapter für GridView

  • 5 Antworten
  • Neuester Beitrag
Diskutiere ArrayList <eigener Klasse> to CustomAdapter für GridView im Android App Entwicklung im Bereich Betriebssysteme & Apps.
C

codecasa

Neues Mitglied
Hallo zusammen

Will eine Artikelliste machen mit einem GridView in dem EditText Boxen drin sind 2-4 Spalten in dem Artikel bearbeitet werden Können.

Database ist alles schon da Hab ne Klasse mit der DataStructur namens:
dsrArtikel

Code:
public class dsrArtikel {
    private int id;
    private int ANr;
    private String text;
    private BigDecimal preis;


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getANr() {
        return ANr;
    }

    public void setANr(int ANr) {
        this.ANr = ANr;
    }
    
    public String gettext () {
        return text;
    }
    
    public void settext (String text){
        this.text = text;
    }
    
    public BigDecimal getpreis () {
        
        return preis;
    }
        
    public void setpreis (BigDecimal preis) {
        this.preis = preis;
    }
    
    
    
    @Override
    public String toString() {
        
        return "Rechnung:";
    }    
    
}
Dan hab ich noch die Klasse für Die Activity bzw. Bein Tab:


Code:
public class AC_Products extends Activity {
 
private dbActions datasource;
List<dsrArtikel> ArtikelList = new ArrayList<dsrArtikel>();


GridView gvArtikel;

public Integer aktAID;

    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.products_layout);
        
        datasource = new dbActions(this);
        
        
        gvArtikel = (GridView) findViewById(R.id.gvArtikel);   
        
        
        fill_Artikel();
    }
    

    private void fill_Artikel()
    {
        

            datasource.open();
            
            ArtikelList = datasource.getArtikel("");
            datasource.close();
            
             
            adcArtikel adapter = new adcArtikel(this, ArtikelList);
            
            gvArtikel.setAdapter(adapter);            
            
            /*
             for (dsrArtikel artikel : ArtikelList) {

                //aktAID = artikel.getId();
                
                // add Row
                //ArrayAdapter<dsrArtikel> adapter = new ArrayAdapter<dsrArtikel>(this,
                //android.R.layout.simple_list_item_1, ArtikelList);         
                    
                 
                                
                
                
                /*
                tr.setOnClickListener(new OnClickListener() {
                    public void onClick(View v) {
                      buchen(v.getId());
                    }
                  });
                
                
                
            }
            */
                
            
             
             
             
         
             
     }
Und noch eine AdapterKlasse aber die App stürzt ab.

Code:
public class adcArtikel extends BaseAdapter 
{

    
    private List<dsrArtikel> lArtikel;
    private Activity activity;
    
    public adcArtikel(Activity context, List<dsrArtikel> name)
    {             
        
        activity = context;
        this.lArtikel=name;
        
    }
    
    private static final float Fix_Text_Size = 20;

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return lArtikel.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    /*
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return lArtikel;
    }
    */

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
           //RelativeLayout mRelative_Box_Grid;
            EditText mTextView;
            View v = null;
            if(convertView==null){
                            
                
                         
                try
                {
                    mTextView = new EditText(activity);
                    mTextView.setTextSize(Fix_Text_Size);
                    mTextView.setBackgroundColor(color.white);
                    
                    mTextView.setText(lArtikel.get(position).gettext().toString());
                                    
                    mTextView.setId(position);
                }
                catch(Exception e)
                {
                    Toast einT = Toast.makeText(activity, e.toString(),Toast.LENGTH_LONG);
                }
                
                        
            }else{
                v=convertView;
            }
            
            return v;        
    }

}
Wie bekomme ich 2-3 Spalten in ein GridView aus meiner KlassenList ???
Code:
List<dsrArtikel> ArtikelList = new ArrayList<dsrArtikel>();
Wie geht mann das an ?????

Danke für jede Hilfe
 
M

Madlip

Gast
wäre gut zu wissen mit was für einer Fehlermeldung die App abstürzt ...

was mich auch ein wenig stützig macht, du setzt v auf null wenn convertview nicht null ist gibst du v=convertview zurück nur was ist convertview? Irgendwie versteh ich den sinn deines Adapters nicht, weil in der Klasse sollten ja eigentlich die Adapter sachen geregelt werden nur wird v nicht wirklich gesetzt, also nicht mit neuen Daten. Und falls convertview null ist gibst du ebenfalls null zurück.
 
C

codecasa

Neues Mitglied
ich hab mir das aus tutorials zusammengebastelt im Prinzip brauch ich nur artikelname und Preis als spalten von der list Array dsrArtikel klasse
 
C

codecasa

Neues Mitglied
Wie könnte Man das lösen ?

Ich habe auch noch nicht ganz verstanden Wie so ein ArrayAdapter funktioniert :(

Da werden ja Irgendwie die Funktionen überschriben und get View muss alles dem GridView übergeben oder wie also die ganzen Spalten oder nur die Structur ??
 
DieGoldeneMitte

DieGoldeneMitte

Experte
Der View, mit dem eine Zeile in einem Listview gerendert wird, wird
im Adapter von getView gebaut (oder recyclelt), mit den Daten befüllt
und dann als Ergebnis von getView an den ListView zurückgegeben.

Du baust zwar "was" in einem getView, lieferst es aber nichts zurück, deshalb knallt es.
 
C

codecasa

Neues Mitglied
Okay danke das war ja Sau dämlich jaja :) Immer diese späten Stunden

Hab es jetzt so gelöst:

Code:
public class adcArtikel extends BaseAdapter 
{

    
    private List<dsrArtikel> lArtikel;
    private Activity activity;
        
    public adcArtikel(Activity context, List<dsrArtikel> name)
    {             
        
        activity = context;
        this.lArtikel=name;
        
    }
    
    private static final float Fix_Text_Size = 20;

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return lArtikel.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }
    

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
           //RelativeLayout mRelative_Box_Grid;
            EditText mTextView;
            EditText mPriceView;
            LinearLayout llV;
            
            View v = null;
            if(convertView==null){
                            
                
                         
                try
                {
                    llV = new LinearLayout(activity);

                    mTextView = new EditText(activity);
                    mTextView.setTextSize(Fix_Text_Size);

                    mPriceView = new EditText(activity);
                    mPriceView.setTextSize(Fix_Text_Size);

                    mTextView.setText(lArtikel.get(position).gettext().toString());
                    mPriceView.setText(lArtikel.get(position).getpreis().toString());                
                    
                    mTextView.setId(position);
                    mPriceView.setId(position);
                    
                    llV.addView(mTextView);
                    llV.addView(mPriceView);
                    v = llV;
                    
                }
                catch(Exception e)
                {
                    Toast einT = Toast.makeText(activity, e.toString(),Toast.LENGTH_LONG);
                }
                
                        
            }else{
                v= (LinearLayout) convertView;
            }
            
            return v;        
    }

}
 
Ähnliche Themen - ArrayList <eigener Klasse> to CustomAdapter für GridView Antworten Datum
4