2016-04-14 12 views
1

Ich bin neu in Android entwickeln. Ich versuche eine Anwendung im Zusammenhang mit der Auktion zu programmieren. Ich habe dieses Open-Source-Beispiel studiert und versucht, es anzupassen. http://product.hubspot.com/blog/building-an-auction-app-in-a-weekendWie bekomme ich ein Objekt von einer Klasse in eine andere Klasse?

Es angewendet Parse als Server zum Hochladen und Abrufen von Daten.

Ich brauche ein Objekt zu kopieren genannt AuctionItem von einer Klasse in einer anderen Klasse für immer Variablen (objectID) in dem Objekt.

AuctionItem.java

@ParseClassName("Item") 
public class AuctionItem extends ParseObject { 

    public AuctionItem() {} 

    public String getObjectID() { return getString("objectID");} 
    public String getName() {return getString("name");} 
    public String getDescription() {return getString("description");} 
    public String getDonorName() {return getString("donorname");} 

} 

ItemListActivity.java

public class ItemListActivity extends ActionBarActivity { 
    List<AuctionItem> allItems = new ArrayList<AuctionItem>(); 
    BaseAdapter adapter; 
    DataManager data = DataManager.getInstance(); 
    String listQuery = DataManager.QUERY_ALL; 

    public void setup() { 
     allItems = data.getItemsMatchingQuery(listQuery, this); 
     adapter = new AuctionItemAdapter(); 
    } 

    public class AuctionItemAdapter extends BaseAdapter { 
     @Override 
     public AuctionItem getItem(int position) { 
       return allItems.get(position); 
     } 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
       final AuctionItem item = getItem(position); 
     } 
    } 

DataManager.java

public class DataManager { 
    private List<AuctionItem> allItems = new ArrayList<AuctionItem>(); 
    static DataManager singletonInstance; 
    public static final String QUERY_ALL = "ALL"; 

    public DataManager() {} 

    public static DataManager getInstance() { 
     if (singletonInstance == null) 
      singletonInstance = new DataManager(); 

     return singletonInstance; 
     } 
    public List<AuctionItem> getItemsMatchingQuery(String query, Activity context) { 
     if (query.equals(QUERY_ALL)) { 
     return allItems; 
     } 

     else { 
      ArrayList<String> queryWords = new ArrayList<String>(); 
      queryWords.addAll(Arrays.asList(query.split(" "))); 

      ArrayList<AuctionItem> results = new ArrayList<AuctionItem>(); 
      for (AuctionItem item : allItems) { 
       for (String word : queryWords) { 
        if (word.length() > 1 && 
        (item.getName().toLowerCase().contains(word.toLowerCase()) || item.getDonorName().toLowerCase().contains(word.toLowerCase()) || 
         item.getDescription().toLowerCase().contains(word.toLowerCase()))) 
        results.add(item); 
       } 
       } 

       return results; 
     } 
    } 
} 

Ich möchte AuctionItem Artikel dieses Objekt und rufen objectID von einer anderen Klasse. Ich habe versucht, eine andere Auktion genannt Kopie und Programm machen es gefällt:

public AuctionItem copy; 
copy = item; 

Aber wenn ich andere Klasse verwenden diese Variable zu nennen, gesagt: Nicht statisches Feld kann nicht von einem statischen Kontext referenziert werden.

Was soll ich tun, um diese object.Please Hilfe zu bekommen !!

+0

aufgrund Ihres "static DataManager-" –

+0

Danke für Antwort. Also, was soll ich für meinen Code tun? – henryptw

+0

Warum verwenden Sie hier ein statisches Schlüsselwort? –

Antwort

0

Versuchen Sie, Ihr Objekt so erhalten:

public AuctionItem copy; 
String item = copy.getObjectID(); 
+0

Danke für die Antwort. Aber es funktioniert nicht. – henryptw

Verwandte Themen