0

したがって、このプロジェクトは私を狂気に駆り立てています。最後の答えをくれたAhmedAeonAxanに感謝します。私はこれまで一緒に作業したことがありませんHashTablesが、私が見たすべてのコードから、これは機能しているはずです。これが私のに表示されない理由を教えてくださいlistview

以下のmodel.javaで作成

public class Model implements Serializable {
public static final int END_MORNING = 11;  // 11:00AM, inclusive
public static final int END_AFTERNOON = 16;  // 4:00PM, inclusive

private GregorianCalendar startDate;

private ArrayList<GregorianCalendar> datesSmoked = new ArrayList<GregorianCalendar>();
private ArrayList<String> locationsSmoked = new ArrayList<String>();
private ArrayList<String> locations = new ArrayList<String>();
private ArrayList<String> allIncidents = new ArrayList<String>();
private Set<String> newLocArr = new HashSet<String>(locations);
private SimpleDateFormat sdf = new SimpleDateFormat("E, MMM dd");
private ArrayList<String> times = new ArrayList<String>();

public String [] defaultLocations = {"Home", "Work", "Commuting", "School", "Bar", "Restaurant", "Social Gathering", "Other"};
public String [] eachSmoked;


public Model(GregorianCalendar date){
    startDate = date;

    for (String s : this.defaultLocations) {            
        locations.add(s);
    }
}

public Model(){
    this(new GregorianCalendar()); // now
}   

public ArrayList<String> getDates() {
    for (int i = 0; i < datesSmoked.size(); i++) {
        String s = (sdf.format(i));
        times.add(s);
    }
    return times;
}

public List<String> getPlacesSmoked() { 

    for (String key : locations) {

    newLocArr.add(key+ ": " + Collections.frequency(locationsSmoked, key)); 

    }       
    return new ArrayList<String>(newLocArr);
}

public ArrayList<String> getAllIncidentsArray() {

    for (int i = 0; i < datesSmoked.size(); i++) {
        allIncidents.add(getDates().get(i) + ", " + locationsSmoked.get(i));
    }

    return allIncidents;
}

public ArrayList<String> getlocationsArray() {
    return this.locations;
}

public ArrayList<String> getLocationsSmokedArray() {
    return this.locationsSmoked;
}

public ArrayList<GregorianCalendar> getDatesSmokedArray() {
    return this.datesSmoked;
}

model.javaに関連するコードを終了します

表示されていない以下のロケーションアクティビティのリストビューに呼び出されます

public class LocationActivity extends Activity {

public static final String SMOKIN_DATA_FILE = "smokin.dat";

public static Model model = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_location);

    restoreModel();

    ListView listView = (ListView) findViewById(R.id.location_listview_Id);
    ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, model.getPlacesSmoked());      
    listView.setAdapter(listAdapter);
    listAdapter.notifyDataSetChanged();
}

本質的に私はArrayList場所を取得しようとしています
ホーム
ホーム
ホーム
ホーム
スクール
スクール
スクール
スクールを表示するスモーク

表示するには
ホーム:4
学校:4

4

1 に答える 1

0

空のリストで初期化される空で作成locTest時に初期化されるため、リストは空です。ModelHashSet test1locations

List(Collection<?>)私が覚えている限り、コンストラクターはコレクションへのポインターではなく、値をコピーしています

迅速な解決策(実際にうまくいくかどうかはわかりません):

public Model(GregorianCalendar date){
    startDate = date;
    for (String s : this.defaultLocations) {            
        locations.add(s);
    }           
    // calling setPlacesSmoked to process data
    setPlacesSmoked();
}

public void setPlacesSmoked() {
    // assuming that locations list holds the data needed to process
    for (String key : locations) {
        test1.add(key+ ": " + Collections.frequency(locations, key));           
    }
}


public List<String> getPlacesSmoked() {             
    //return locTest;
    return new ArrayList<String>(test1);
}

期待される出力:

Home: 1
Work: 1 
Commuting: 1
School: 1
Bar: 1
Restaurant: 1
Social Gathering: 1
Other: 1

でもlocations内容次第です

于 2013-03-11T00:29:41.983 に答える