簡體   English   中英

為什么我的程序只顯示我的數組之一<string>我的所有 hashmap 數據中的食物而不是實際值?</string>

[英]Why does my program only show one of my Array <String> Food in all of my hashmap data instead of the actual values?

package com.example.rhc_checklist;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ExpandableListView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

import com.example.rhc_checklist.R;

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

/**
 * Created by User on 2/28/2017.
 */

public class ListDataActivity extends AppCompatActivity {

private static final String TAG = "ListDataActivity";

DatabaseHelper mDatabaseHelper;

private ExpandableListView mListView;
private ExpandableListAdapter listAdapter;
private List<String> listDataHeader;
private LinkedHashMap<String, List<String>> listHash;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.list_layout);
    mListView = (ExpandableListView) findViewById(R.id.lvExp);
    initData();
    listAdapter = new ExpandableListAdapter(this, listDataHeader, listHash) {
    };
    mListView.setAdapter(listAdapter);
    mDatabaseHelper = new DatabaseHelper(this);

   populateListView();
}

private void initData() {
    String kioskTasks[] = {"Working Properly:", "Guests Waiting:"};
    String foodTasks[] = {"Aromas Lines long:", "Aromas Clean:", "Food Prep Areas Clean:",
            "Kitchen Staff Busy:", "Kitchen Clean:", "EDR Clean and Stocked:", 
 "Staff:Friendly/Helpful/Uniforms:"};
    String tableTasks[] = {"All Tables Being Played:", "Guests Having Fun:", 
  "Staff:Friendly/Helpful/Uniforms:"};
    String hotelTasks[] = {"Less Than 5 Rooms Left at South Tower:", "Less Than 5 Rooms Left at North 
   Tower:",
            "Staff:Friendly/Helpful/Uniforms", "Front Desk Agent Present:"};
    String casinoTasks[] = {"Slot Attendants Helping Guests:", "Beverage Servers Asking For Drinks:",
            "Soda Machine Stocked and Maintained:", "Casino Host Visible and Talking to Guests:", 
  "Slots Being Played/Fun:",
            "Ash Trays Being Emptied:", "Glasses Being Picked Up:", "Cage Lines:", "Security Available:",
            "Floor Feels Busy:", "Restrooms Clean and Stocked:", "Staff:Friendly/Helpful/Uniforms:",
            "Trash on Floor:", "Attendants Walking in Pairs:", "Masks Worn by Staff:", "Masks Worn by Guests:"};
    String cleanTeamTasks[] = {"Staff on Task:", "Following Proper Procedure: 1. Spray Cloth 2. Wipe Buttons 3. Wipe Screen 4. Wipe Chair:"};
    String travelersTasks[] = {"Truck Lot Full:", "Showers Utilized:", "Clean:", "RV Park Full:",
            "Staff:Friendly/Helpful/Uniforms:"};
    String parkTasks[] = {"Clean:", "Security Observed:", "Well Lit:"};
    String cstoreTasks[] = {"Staff:Friendly/Helpful/Uniforms:", "Clean/Organized:", "Pumps Working:",
            "Bathrooms Clean:", "Well Lit:"};
    String securityTasks[] = {"Anything Going On?:", "Ride Along with Lot Patrol:", "Staff Walking in Pairs:"};
    String equestrianTasks[] = {"Event:", "Attendance:", "Guests Enjoying Show:", "Impact on Casino Floor:"};
    String constructionTasks[] = {"Secure Access Points:", "Equipment/Tools Exposed/Unattended:",
            "Equipment Subject to Theft or Misuse:", "Fire Hazards/Trash/Chemicals:", "Trip Hazards",
            "Sharp or Low Hanging Objects:", "Adequate Signage:", "Adequate Lighting:"};
    String early = "Early Shift: ";
    String late = "Late Shift: ";
    listDataHeader = new ArrayList<>();
    listHash = new LinkedHashMap<>(500);
    listDataHeader.clear();
    listDataHeader.add("Kiosks");
    listDataHeader.add("Food and Beverage");
    listDataHeader.add("Table Games");
    listDataHeader.add("Hotels");
    listDataHeader.add("Casino Floor");
    listDataHeader.add("Clean Team");
    listDataHeader.add("Travelers Center");
    listDataHeader.add("Parking Lot");
    listDataHeader.add("C-Store");
    listDataHeader.add("Security");
    listDataHeader.add("Equestrian Center");
    listDataHeader.add("Construction Areas");

    List<String> Kiosks = new ArrayList<>();
    for (int i = 0; i < kioskTasks.length; i++){
        Kiosks.add(kioskTasks[i]);
    }
    List<String> Food = new ArrayList<>();
    for (int i = 0; i < foodTasks.length; i++){
        Food.add(foodTasks[i]);
    }
    List<String> Table = new ArrayList<>();
    for (int i = 0; i < tableTasks.length; i++){
        Table.add(tableTasks[i]);
    }
    List<String> Hotel= new ArrayList<>();
    for (int i = 0; i < hotelTasks.length; i++){
        Hotel.add(hotelTasks[i]);
    }
    List<String> Casino= new ArrayList<>();
    for (int i = 0; i < casinoTasks.length; i++){
        Casino.add(casinoTasks[i]);
    }
    List<String> Clean = new ArrayList<>();
    for (int i = 0; i < cleanTeamTasks.length; i++){
        Clean.add(cleanTeamTasks[i]);
    }
    List<String> Travelers = new ArrayList<>();
    for (int i = 0; i <travelersTasks.length; i++){
        Travelers.add(travelersTasks[i]);
    }
    List<String> Park= new ArrayList<>();
    for (int i = 0; i < parkTasks.length; i++){
        Park.add(parkTasks[i]);
    }
    List<String> CStore = new ArrayList<>();
    for (int i = 0; i < cstoreTasks.length; i++){
        CStore.add(cstoreTasks[i]);
    }
    List<String> Security= new ArrayList<>();
    for (int i = 0; i < securityTasks.length; i++){
        Security.add(securityTasks[i]);
    }
    List<String> Equestrian= new ArrayList<>();
    for (int i = 0; i < equestrianTasks.length; i++){
        Equestrian.add(equestrianTasks[i]);
    }
    List<String> Construction = new ArrayList<>();
    for (int i = 0; i < constructionTasks.length; i++){
        Construction.add(constructionTasks[i]);
    }

    listHash.put(listDataHeader.get(0), Kiosks);
    listHash.put(listDataHeader.get(1), Food);
    listHash.put(listDataHeader.get(2), Table);
    listHash.put(listDataHeader.get(3), Hotel);
    listHash.put(listDataHeader.get(4), Casino);
    listHash.put(listDataHeader.get(5), Clean);
    listHash.put(listDataHeader.get(6), Travelers);
    listHash.put(listDataHeader.get(7), Park);
    listHash.put(listDataHeader.get(8), CStore);
    listHash.put(listDataHeader.get(9), Security);
    listHash.put(listDataHeader.get(10), Equestrian);
    listHash.put(listDataHeader.get(11), Construction);
}[enter image description here][1]

還不允許嵌入圖像,所以https://i.stack.imgur.com/K5wig.png

這是 android 仿真器上 output 的屏幕截圖。 您可以看到所有類別中僅顯示 foodTasks。 我似乎無法弄清楚為什么...

據我所知,列表都已正確填充,我添加了代碼以確保在某一時刻它們都包含適當的數據。 由於某種原因,它們只是沒有被添加到 HashMap 中。 事實上,對於建築和賭場類別,應用程序崩潰並說它們是 null。

編輯:ExpandableListAdapter Class 進行更多錯誤檢查。

package com.example.rhc_checklist;
import android.content.Context;
import android.graphics.Typeface;
import android.os.Build;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

import androidx.annotation.RequiresApi;

import org.w3c.dom.Text;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

public class ExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> listDataHeader;
private LinkedHashMap<String, List<String>> listHashMap;

public ExpandableListAdapter(Context context, List<String> listDataHeader, LinkedHashMap<String, List<String>> listHashMap) {
    this.context = context;
    this.listDataHeader = listDataHeader;
    this.listHashMap = listHashMap;
}
@Override
public int getGroupCount() {
    return listDataHeader.size();
}

@Override
public int getChildrenCount(int i) {
    return listHashMap.get(listDataHeader.get(i)).size();
}

@Override
public Object getGroup(int i) {
    return listDataHeader.get(i);
}

@Override
public Object getChild(int i, int i1) {
    return listHashMap.get(listDataHeader.get(i)).get(i1);
}

@Override
public long getGroupId(int i) {
    return i;
}

@Override
public long getChildId(int i, int i1) {
    return i1;
}

@Override
public boolean hasStableIds() {
    return false;
}

@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
    String headerTitle = (String)getGroup(i);
    if(view == null) {
        LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.list_group, null);
    }
    TextView lblListHeader = (TextView)view.findViewById(R.id.lblListHeader);
    lblListHeader.setTypeface(null, Typeface.BOLD);
    lblListHeader.setText(headerTitle);
    return view;
}

@Override
public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
    final String childText = (String)getChild(1,i1);
    if(view == null){
        LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(R.layout.list_item, null);
    }
    TextView txtListChild = (TextView)view.findViewById(R.id.lblListItem);
    txtListChild.setText(childText);
    return view;
}

@Override
public boolean isChildSelectable(int i, int i1) {
    return true;
}
}

我在第 80 行的文件ExpandableListAdapter.java中有一個印刷錯誤。
我不小心放了

final String childText = (String)getChild(1,i1);

代替

final String childText = (String)getChild(i,i1);

感謝您的所有幫助。 這解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM