ArrayList <eigener Klasse> to CustomAdapter für GridView

C

codecasa

Neues Mitglied
0
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
 
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.
 
ich hab mir das aus tutorials zusammengebastelt im Prinzip brauch ich nur artikelname und Preis als spalten von der list Array dsrArtikel klasse
 
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 ??
 
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.
 
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

FabianDev
Antworten
5
Aufrufe
561
swa00
swa00
R
  • RudolfHagen
Antworten
1
Aufrufe
652
koje71
koje71
netfreak
  • netfreak
Antworten
10
Aufrufe
462
netfreak
netfreak
Zurück
Oben Unten