2012-08-25 15 views
5

Chciałbym zmodyfikować elementy generowane przez eclipse w schemacie master/detail. Nie mogę znaleźć sposobu, aby to zrobić. W szczególności chciałbym pobrać elementy z pliku zasobów xml (res/values ​​/ arrays).Jak modyfikować sztuczną zawartość w działaniu master/detail Androida?

jest to plik Java:

package com.ga.termeapp.dummy; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 


public class DummyContent { 

    public static class DummyItem { 

     public String id; 
     public String content; 

     public DummyItem(String id, String content) { 
      this.id = id; 
      this.content = content; 
     } 

     @Override 
     public String toString() { 
      return content; 
     } 
    } 

    public static List<DummyItem> ITEMS = new ArrayList<DummyItem>(); 
    public static Map<String, DummyItem> ITEM_MAP = new HashMap<String, DummyItem>(); 

    static { 

     addItem(new DummyItem("1", "Le terme")); 
     addItem(new DummyItem("2", "Le cure termali")); 
     addItem(new DummyItem("3", "")); 
    } 

    private static void addItem(DummyItem item) { 
     ITEMS.add(item); 
     ITEM_MAP.put(item.id, item); 
    } 
} 

Odpowiedz

0

miałem ten sam problem, ale insted biorąc wszystkie wartości z tablicy Zmieniłem

addItem(new DummyItem("1", "Le terme")); 
addItem(new DummyItem("2", "Le cure termali")); 
addItem(new DummyItem("3", "")); 

edytowany te addItem a następnie, jeśli chcesz aby dodać ciąg do swoich przedmiotów, musisz edytować całą tę część kodu.

public String id; 
    public String content; 

    public DummyItem(String id, String content) { 
     this.id = id; 
     this.content = content; 

Mam nadzieję, że ci to pomoże.

5

Możliwe rozwiązanie:

Wymień klasę statyczną na własną. W moim przypadku DummyItem staje się ProfileItem i ma różne atrybuty, a DummyContent staje się ProfileListContent.

Następnie należy zastąpić blok statyczny static { addItem ... } metodą statyczną. W poniższym przypadku, muszę załadować elementy z bazy danych:

public static void setContext(Context c) { 
    if (db == null) db = new MyDbAdapter(c); // SQLiteOpenHelper + SQLiteDatabase manager 
    if (db.isOpen() == false) { 
     db.open(); 
     Cursor c = db.getProfiles(); // database query 
     if (c.moveToFirst()) { 
      do { 
       ProfileItem item = new ProfileItem(c.getString(0), c.getString(1), 
        c.getString(2)); 
       addItem(item); 
      } while (c.moveToNext()); 
     } 
    } 
} 

I wywołać metodę setContext z moim głównym działalności na początku metody onCreate, przed każdą inną działalnością.

public void onCreate(Bundle savedInstanceState) { 
    ProfileListContent.setContext(this); 
    ... 

Jeśli chcesz dynamicznie dodać element:

public static void insertProfile(ProfileItem profile) { 
    db.insertProfile(profile); // add item to the database 
    addItem(profile); // the same addItem provided with the eclipse wizard 
} 

Można oczywiście zmienić układ ListView aplikacji, I, pod warunkiem an example here.

+0

Ponieważ ta zostanie wygenerowany za każdym razem zrobić listę lub master/detail aktywność, skrót używam to: klikaj paczki i pliki klas i używaj 'shift + F6' do refaktoryzacji nazw, wtedy otwieram pliki i po prostu zamieniam' ctl + R' na DummyContent i DummyItems na wszystko co chcę i zaczynam od tego miejsca. – mkrinblk

0

To jest coś, co zadziałało dla mnie, nie wiem, czy to najlepsza praktyka. Usuń statyczny blok i na ItemListActivity.java na Oncreate Dodaj ten kod

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    if (DummyContent.ITEMS.isEmpty()) 
    { 
     DummyContent.addItem(new DummyItem("1", getResources().getString(R.string.menu1))); 
     DummyContent.addItem(new DummyItem("2", getResources().getString(R.string.menu2))); 
     DummyContent.addItem(new DummyItem("3", getResources().getString(R.string.menu3))); 
    } 

nadzieję, że to pomaga

Powiązane problemy