मुझे गेटर्स और सेटर्स से भरी क्लास मिली है, इसलिए मैं घड़ियों की एक सूची बना सकता हूं और इसे मेरे बाकी ऐप तक पहुँचा सकता हूँ:

Watch.java :

public class Watch {

    private String brand, mvmt, serial, urlLoc;
    private int wr, year;
    private double price;
    //getters and setters

}

मैं एक सूची प्राप्त करने के लिए इसका उपयोग करना चाहता हूं:

package com.example.pat.watchproj;
import java.util.LinkedList;

public class WatchList extends LinkedList {
    //set up the watch list so it can be accessed through the app
    private static WatchList wlInst = new WatchList();

    public static WatchList getInstance(){
        if(wlInst == null){
            wlInst = new WatchList();
        }
        return wlInst;
    }
    private WatchList(){

    }
    public static void setInstance(WatchList watchList){
        wlInst = watchList;


    }
}

यहाँ एक उदाहरण है कि मैं कैसे एक घड़ी जोड़ूंगा

public void addWatch(View view){
    //initilize watch list and all edit texts
    //will need to parsedouble and parseinteger
    watchList = WatchList.getInstance();
    Watch usrWatch = new Watch();
    EditText addBrand = (EditText) findViewById(R.id.addBrand);
    EditText addSerial = (EditText) findViewById(R.id.addSerial);
    EditText addMvmt = (EditText) findViewById(R.id.addMvmt);
    EditText addWr = (EditText) findViewById(R.id.addWr);
    EditText addYear = (EditText) findViewById(R.id.addYear);
    EditText addPrice = (EditText) findViewById(R.id.addPrice);
    EditText addUrl = (EditText) findViewById(R.id.addUrl);

    //add to object now
    usrWatch.setBrand(addBrand.getText().toString());
    usrWatch.setMvmt(addMvmt.getText().toString());
    usrWatch.setSerial(addSerial.getText().toString());
    usrWatch.setWr(Integer.parseInt(addWr.getText().toString()));
    usrWatch.setPrice(Double.parseDouble(addPrice.getText().toString()));
    usrWatch.setYear(Integer.parseInt(addYear.getText().toString()));
    usrWatch.setUrlLoc(addUrl.getText().toString());

    watchList.add(usrWatch);
    WatchList.setInstance(watchList);

    Toast.makeText(addWatch.this, "Watch added", Toast.LENGTH_SHORT).show();
}

इसलिए, मुख्यता में, जब मैं यह लिखता हूं:

public void onOption8 (MenuItem i){
    //show most expensive
    WatchList watchList = WatchList.getInstance();
    int x = 0;
    for(int a = 0; a < watchList.size(); a++) {
        if (watchList.get(x).getPrice() <  watchList.get(a).getPrice()) {
            x = a;

        }
    }
}

तो उस रन के बाद, मुझे सबसे महंगी घड़ी का सीरियल पाने के लिए watchList.get (x) .getSerial () का उपयोग करने में सक्षम होना चाहिए। लेकिन Android स्टूडियो मुझे बता रहा है कि यह onOption8 में कठबोली विधि getPrice नहीं कर सकता है, और मुझे यकीन नहीं है कि मैं गलत कहां जा रहा हूं। मुझे बताएं कि क्या मैं स्पष्ट नहीं हूं / अधिक जानकारी प्रदान कर सकता हूं। धन्यवाद

0
royalflush5 13 नवम्बर 2015, 18:43

2 जवाब

सबसे बढ़िया उत्तर

आपने अपने कस्टम LinkedList कार्यान्वयन के लिए एक प्रकार प्रदान नहीं किया है; जैसे कि get(x) Object लौट रहा है। WatchList वर्ग घोषणा को इसमें बदलें:

public class WatchList extends LinkedList<Watch> {
    ...
}
4
jonk 13 नवम्बर 2015, 15:54

यह त्रुटि संभवतः इसलिए होती है क्योंकि आपने वॉचलिस्ट क्लास को अभी तक एक प्रकार का पैरामीटर नहीं दिया है। OnOption8 में, कंपाइलर को यह नहीं पता होता है कि आपके द्वारा देखा गया वॉचलिस्ट टाइप किया गया है , , या

सुनिश्चित करें कि आप या तो केवल वॉच का लिंक्डलिस्ट बनाएं, जैसे कि

LinkedList<Watch> ll = new LinkedList<Watch>() 

या जो आप निर्दिष्ट करते हैं कि वॉचलिस्ट वास्तव में वॉच ऑब्जेक्ट्स का लिंक्डलिस्ट है, और आपके वॉचलिस्ट क्लास में और कुछ नहीं।

1
Jochem Kleine 13 नवम्बर 2015, 15:58