ListView und Arrays...

Du hast drei Arraylisten OK .

Ich würde es zwar anders machen eine „DatenKlasse“ in der alle drei Parameter gespeichert werden. Und diese dann in eine Liste packen.

Ok du Willst es mit drei Listen.
Bein erstellen der Liste was ist „applogo“ ?
Mit assList versucht du wohl ein Array in eine Liste zu speichern?

Es wird aber nur ein Element je Liste hinzugefügt.
Nur was ist input_app_name Ich denke EditText?


Du musst dir schon einen Custom ArrayAdapter erstellen.
Du hast momentan nur einen der eine deiner Listen benutzt.
 
Du hast drei Arraylisten OK .

Ich würde es zwar anders machen eine „DatenKlasse“ in der alle drei Parameter gespeichert werden. Und diese dann in eine Liste packen.
Das hatte ich glaube ich mal gemacht(Der Code der von dir ist.) Das problem ist ja das ich keine Elemente hinzufügen kann. Weil das nur Strings Arrays benutzt. (Was funktioniert hatte). Ich muss ja das hinzufügen können und das ging irgendwie nur mit den List...
Ok du Willst es mit drei Listen.
Bein erstellen der Liste was ist „applogo“ ?
Wenn ein Entwickler eine neue App anlegt, wird ja erst nut der App Name, Package Name und das App Dammy Logo angelegt(+App Id). Das Logo ist ja das Bild von der App(Symbol...)
Mit assList versucht du wohl ein Array in eine Liste zu speichern?

Es wird aber nur ein Element je Liste hinzugefügt.
Nur was ist input_app_name Ich denke EditText?
Ja das ist EditText vom Dialog.
Du musst dir schon einen Custom ArrayAdapter erstellen.
Und dann kann ich alle drei Listen anzeigen lassen an der Richtigen position?
Wie macht man ein Custom Array Adapter?

Gibt es da was einfachen code?

Ich versuche ja das grade alles zu lernen und wie es ja funktioniert. Und das meiste ist ja nur einzeilig, die anderen funktionieren nicht(Die Views...)

Du hast momentan nur einen der eine deiner Listen benutzt.
ich habe mal das ausprobiert gehabt:

Java:
  String appname_edit = input_app_name.getText().toString().trim();
                        String packagename_edit = input_package_name.getText().toString().trim();
                        Toast.makeText(getActivity(), appname_edit, Toast.LENGTH_SHORT).show();

                        // App Id wird registriert



                        list_applogo.add(R.drawable.ks_logo);
                        list_appname.add(appname_edit);
                        list_packagename.add(packagename_edit);

                        // App Id Elemente werden um gespeichert und in Datenbank gespeichert

Da wird nur der PackageName in doie Zeile 2 geschrieben und die erste Zeile wird ignoriert.

Ich habe außerdem mal das probiert:

Java:
        ArrayAdapter<String> listeAdapter = new ArrayAdapter<>(
                getActivity(),
                R.layout.list_row_konsole,
                R.id.konsole_app_name_list,
                R.id.konsole_pack_name_list,
                list_appname,
                list_packagename);

      




        listView = (ListView)fragmentlayout_alle_apps_konsole.findViewById(R.id.listView);
        listView.setAdapter(listeAdapter);

Aber da wird das <> von new ArrayAdapter rot gekennzeichnet.
 
Java:
        ArrayAdapter<String> listeAdapter = new ArrayAdapter<>(
                getActivity(),
                R.layout.list_row_konsole,
                R.id.konsole_app_name_list,
                R.id.konsole_pack_name_list,
                list_appname,
                list_packagename);

  




        listView = (ListView)fragmentlayout_alle_apps_konsole.findViewById(R.id.listView);
        listView.setAdapter(listeAdapter);

Aber da wird das <> von new ArrayAdapter rot gekennzeichnet.

Das geht auch nicht.
Wenn du in die Doku schaust weißt du das es diesen Konstruktor zu ArrayAdapter nicht gibt.





Du musst dir selber einen Adapter schreiben das ist dann eine eigene Klasse die dann meist von ArrayAdapter erbt.

Ps ich habe dir mit Sicherheit keinen Code gegeben maximal einen Link der weiter helfen könnte.


Also schaue im Netz nach einem Custom ListView (Adapter) für android .
Natürlich sind das dann Beispiele um deine Funktionalität musst du dich dann schon selber kümmern. Das wirst du nicht fertig finden. Die links dienen dazu die Logik die dahinter steckt zu verstehen. Nicht einfach Copy Paste

 
Zuletzt bearbeitet:
Diesen Link hatte ich mal gegeben. "nur Link"
Ja da werden Arrays benutzt aber wo ist jetzt das Problem es auf ArrayListen umzustellen?
Dazu solltest du in der Lage sein. Ansonsten Grundlagen Java Listen anschauen.
 
Diesen Link hatte ich mal gegeben. "nur Link"
Ja da werden Arrays benutzt aber wo ist jetzt das Problem es auf ArrayListen umzustellen?
Dazu solltest du in der Lage sein. Ansonsten Grundlagen Java Listen anschauen.
Ja das war der Link, den du mal gegeben hattest. Wenn du mal geschauen hat, benutzte er nur Strings Arrays. Was ich leider nicht benutzen kann.

Ich habe im Internet mal nach Custom List Java android gegoogelt, leider finde ich wenn nur Sachen mit Strings Arrays.

Ich habe auch versucht die List in ein String Array umzuwandeln, was auch nicht funktionierte.

Das mit den String Arrays, währe ja für das normale anzeigen der Apps für die Nutzer kein Problem, da es ja eine feste Array größe festgelegt ist...

Aber in der Entwickler Konsole darf ich kein String Array verwenden, da ich eine dynamische Liste brauche, wo der Entwickler seine Apps zur Liste hinzufügen kann.

Leider kann man kein .add() zu einem String Array machen, wo ja das Problem liegt. Und ich kann auch meine 3 Listen nicht an den Adapter Klasse(Wie im Link) übergeben, da es nur String Arrays funktionieren.
 
Wenn es dir nicht möglich ist den link den damals und heute gegeben habe auf Arraylisten umzuschreiben. Würde ich sagen dann lernne erstmal java Grundlagen.

Der zweite link von heute benutz eine Liste mit einem Daten Model.

Und du findest keine Code Beispiel im Netz.
 
So hier der Code aus dem Link mit den drei Arrays als Listen.

Das ist eigentlich eine einfache Anfänger Übung in Java. Einen Code der ein Array benutzt in Arraylist zu bringen. Wenn du so etwas nicht kannst solltest du erst mal Java Grundlagen lernen bevor du mit Android weiter machst.
Wie du nun das in deine Logik mit deinen Listen bringst ist deine Sache dabei werde ich dir nicht helfen.

Java:
public class MainActivity extends AppCompatActivity {

    ListView list;

    /*String[] maintitle ={
            "Title 1","Title 2",
            "Title 3"
    };
    String[] subtitle ={
            "Sub Title 1","Sub Title 2",
            "Sub Title 3"
    };
    Integer[] imgid={
            R.drawable.download_1,R.drawable.download_2,
            R.drawable.download_3
    };*/

    ArrayList maintitle = new ArrayList<String>();
    ArrayList subtitle = new ArrayList<String>();
    ArrayList imgid = new ArrayList<Integer>();

    void setMyLists(){
        maintitle.add("Title1");
        maintitle.add("Title2");
        maintitle.add("Title3");

        subtitle.add("Sub Title 1");
        subtitle.add("Sub Title 2");
        subtitle.add("Sub Title 3");

        imgid.add(R.drawable.download_1);
        imgid.add(R.drawable.download_2);
        imgid.add(R.drawable.download_3);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        setMyLists();

        MyListAdapter adapter=new MyListAdapter(this, maintitle, subtitle,imgid);
        list=(ListView)findViewById(R.id.list);
        list.setAdapter(adapter);


        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // TODO Auto-generated method stub
                if(position == 0) {
                    //code specific to first list item
                    Toast.makeText(getApplicationContext(),"Place Your First Option Code",Toast.LENGTH_SHORT).show();
                }

                else if(position == 1) {
                    //code specific to 2nd list item
                    Toast.makeText(getApplicationContext(),"Place Your Second Option Code",Toast.LENGTH_SHORT).show();
                }

                else if(position == 2) {

                    Toast.makeText(getApplicationContext(),"Place Your Third Option Code",Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

Java:
public class MyListAdapter extends ArrayAdapter<String> {

    private final Activity context;
    private ArrayList maintitle ;
    private ArrayList subtitle ;
    private ArrayList imgid ;

    public MyListAdapter(Activity context, ArrayList<String> maintitle, ArrayList<String> subtitle, ArrayList<Integer> imgid) {
        super(context, R.layout.mylist, maintitle);
        // TODO Auto-generated constructor stub

        this.context = context;
        this.maintitle = maintitle;
        this.subtitle = subtitle;
        this.imgid = imgid;

    }

    public View getView(int position, View view, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.mylist, null, true);

        TextView titleText = (TextView) rowView.findViewById(R.id.title);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        TextView subtitleText = (TextView) rowView.findViewById(R.id.subtitle);

        titleText.setText(maintitle.get(position).toString());
        imageView.setImageResource((Integer) imgid.get(position));
        subtitleText.setText(subtitle.get(position).toString());

        return rowView;
    };
}
 
Zuletzt bearbeitet:
Java:
    ArrayList maintitle = new ArrayList<String>();
    ArrayList subtitle = new ArrayList<String>();
    ArrayList imgid = new ArrayList<Integer>();

Rohtypen sollten nicht verwendet werden!

Besser:
Java:
    ArrayList<String> maintitle = new ArrayList<String>();
    ArrayList<String> subtitle = new ArrayList<String>();
    ArrayList<Integer> imgid = new ArrayList<Integer>();

// bzw. noch besser mit dem Interface

    List<String> maintitle = new ArrayList<String>();
    List<String> subtitle = new ArrayList<String>();
    List<Integer> imgid = new ArrayList<Integer>();

// oder kürzer

    List<String> maintitle = new ArrayList<>();
    List<String> subtitle = new ArrayList<>();
    List<Integer> imgid = new ArrayList<>();
 
Java:
ArrayList<String> maintitle = new ArrayList<>();
ArrayList<String> subtitle = new ArrayList<>();
ArrayList<Integer> imgid = new ArrayList<>();

gut dann eben so
 
gebe mir bitte einen Grund Beispiel warum RohTypen nicht verwendet werden sollten.
Wenn Du gegen Interfaces entwickelst, dann hast Du keine feste Abhängigkeit zu der konkreten Implementierung. Dadurch kann die konkrete Implementierung z.B. jederzeit gewechselt werden.

Edit: Mit "Rohtypen" war das Weglassen des Generics gemeint: Du verlierst die Typsicherheit. Wenn Du einfach nur eine ArrayList hast, dann kannst Du da alles rein packen. Aber Du willst ja eine List mit speziellen Inhalt. Daher wurde mit Java 1.5 Generics eingeführt.

Edit2: Typo korrigiert
 
Ja ArrayList ist für mich kein Interface.
Daher das Edit, das ich gemacht habe. Es geht um eine Typsicherheit. In eine ArrayList<String> kannst Du nur Strings packen, in eine ArrayList<Integer> nur Integer. In eine ArrayList kannst Du alles packen und entsprechend kannst Du zur Laufzeit Probleme bekommen.
 

Zurück
Oben