simple_list_item_2 auswahl mit id belegen

  • Antworten:2
Volkan Aydin
  • Forum-Beiträge: 187

16.07.2014, 19:50:18 via Website

Hallo wiedermal.

Ich habe es fertig gebracht eine Listview zu erstellen ala simple_list_item_2. funktioniert tadellos, der onclickitemlistener ist auch funktionsbereit. ich habe auch per Log.i herausgefunden wie man das ganze abruft. nun möchte ich das bei auswahl die dementsprechende id zurückgegeben wird. Wie mache ich das am einfachsten? So sieht das ganze schon mal aus......

ublic class projektListView extends ListActivity {

db_syncAll_options db = new db_syncAll_options(this);
SavePreferences sp = new SavePreferences(this);

      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.projekt_listview);
        ListView listView = (ListView)findViewById(android.R.id.list);
        ArrayList<Map<String, String>> list = buildData();
        String[] from = { "Titel", "Subtitel" };
        int[] to = { android.R.id.text1, android.R.id.text2 };

        SimpleAdapter adapter = new SimpleAdapter(this, list,
            android.R.layout.simple_list_item_2, from, to);
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {

                final String item = parent.getItemAtPosition(position).toString();
                String[] ids = item.split(".", 1);
                sp.setP("id_projekt",ids[0]);
            }
        });
      }

      private ArrayList<Map<String, String>> buildData() {
        ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
        db.open();
        String db_name = "gd_projekt";
        String[] back = {"id_projekt","projektName"};
        String where = "id_user = '"+ sp.viewP("id")+ "'";
        String order = "id_projekt DESC";
        String group = null;
        String limit = null;
        Cursor c = db.whileQuery(db_name, back, where, order, group, limit);
        Log.i("bishier","hin");
        c.moveToFirst();
        do{
            String titel =""; 
            if(c.getString(c.getColumnIndex("projektName")) != null &amp;&amp; !c.getString(c.getColumnIndex("projektName")).equals("")){
            titel = Integer.toString(c.getInt(c.getColumnIndex("id_projekt")))+". "+ c.getString(c.getColumnIndex("projektName"));    
            }else{
            titel = Integer.toString(c.getInt(c.getColumnIndex("id_projekt")))+". Unbekannt";   
            }


            String id = Integer.toString(c.getInt(c.getColumnIndex("id_projekt")));
            String dbGlasB = "gd_bestell_glas";
            String whereIdProjekt = "id_projekt = '"+id+"'";
                if(db.exist(dbGlasB, whereIdProjekt )){
                String[] back2 = {"breite","hohe","dicke","name"};
                String order2 = "objektNr DESC";
                String limit2 = "0,1";
                Cursor c2 = db.whileQuery(dbGlasB, back2, whereIdProjekt, order2, group, limit2);
//                  c2.moveToFirst();
                    String breite = Integer.toString(c2.getInt(c2.getColumnIndex("breite")));
                    String hohe   = Integer.toString(c2.getInt(c2.getColumnIndex("hohe")));
                    String dicke  = Integer.toString(c2.getInt(c2.getColumnIndex("dicke")));
                    String name   = c2.getString(c2.getColumnIndex("name"));
                    String subTitel = breite+" x "+hohe+ " x "+ dicke + "mm - " + name;
                    list.add(putData(titel,subTitel));

                }else{
                    list.add(putData(titel,"kein weiteren Daten vorhanden"));
                }

            }while(c.moveToNext());
            db.close();
            return list;
          }

          private HashMap<String, String> putData(String name, String purpose) {
            HashMap<String, String> item = new HashMap<String, String>();
            item.put("Titel", name);
            item.put("Subtitel", purpose);
            return item;
          }



        } 

Antworten
Georg C.
  • Forum-Beiträge: 235

17.07.2014, 00:56:55 via Website

Hallo Volkan Aydin, (Hallo wiedermal auch)
hmm .... ich kann deine Logik nachvollziehen! Tendiert mittlerweile in die OOP.
Mit deinen -> "Global anwendbar / global verwendbar" Klassen möchtest du DIR! eine Art "eigener API" kreieren. Brauchst du auf Button zu reagieren, "Klatschst" du dir in dein Projekt die / deine / eine Button Klase. Brauchst du was anzeigen zu lassen, "Klatschst" du dir in dein Projekt die / deine / eine View Klasse .... usw. Bzw. brauchst du in der XXX Klase was mit Alert ausgeben suchst du nach Alert Code "Ausschnitt" oder fertige Alert Klasse, welcher mit deinem "ALLES / KLASSEN / ....." ohne Fehler Funktioniert.

SORRY - genau das haben "schlaue Köpfe" schon längst gemacht!
Heiß - ... Programmierungssprache ...
Obwohl dein "Konzept / Idee / Logik" in die richtige Richtung tendiert,
wird mit der Umsetzung des ganzes - sorry - nichts!
Obwohl ich gerne motiviere, hier (bei dir) werde ich von der Sache (Deine Logik / Vorgehen) sehr abraten!
ABER - lerne "Richtiges Programmieren" - mit jedem Vorschritt, wirst du enorme Freude erleben! (Glaube mir bitte.)

Ist nur ein Hinweis / Tipp von mir (& nur gut gemeint)
sonst bin raus. (over ) mische mich in die Frage nicht mehr.

LG
Georg

Ps.
Sehe dir bitte DAS listview tutorial. Paar Codezeilen - und es funktioniert 1A mit ALLEM! - was "sauber" programmiert ist.

Sorry für Gramatik & Stilistik Fehler.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

17.07.2014, 06:49:04 via App

Welche Id wilost du denn im listener bekommen?
Ist das die item position?
Du übergibts dem lv item doch keine ie als feld oder?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten