Как получить содержимое файла JSON в виде текста в разных фрагментах в Android Studio? - PullRequest
0 голосов
/ 03 апреля 2019

Я проанализировал JSON-файл, так что нужный мне текст находится в HashMap. Как мне отобразить этот текст на вкладках? Или есть способ сделать строки в файле JSON как строковые переменные в файле strings.xml?

Редактировать: вот большая часть кода для моего основного класса анализа данных и метода onCreate

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "Dining Hall Menu";
    private List<String> days = Arrays.asList("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
    private LinkedHashMap<String, String> menu = new LinkedHashMap<>();
    private SectionsPageAdapter mSectionsPageAdapter;
    private ViewPager mViewPager;
    private int[] tabIcons = {
            R.drawable.ic_action_name,
            R.drawable.ic_action_tomorrow,
            R.drawable.ic_action_week
    };
 public void readJsonStream(InputStream in) throws IOException {
        JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
        try {
            readMessagesArray(reader);
        } finally {
            reader.close();
        }
    }

    public void readMessagesArray(JsonReader reader) throws IOException {
        int count = 0;
        reader.beginArray();
        while (reader.hasNext()) {
            readMessage(reader, count);
            count++;
        }
        reader.endArray();
    }

    public void readMessage(JsonReader reader, int count) throws IOException {
        String day,food;
        reader.beginObject();
        while (reader.hasNext()) {
            String name = reader.nextName();
            if (name.equals("Monday") || name.equals("Tuesday") || name.equals("Wednesday")
                    || name.equals("Thursday") || name.equals("Friday")
                    || name.equals("Saturday") || name.equals("Sunday")) {
                day = name;
                food = reader.nextString();
                if (count == 0) {
                    menu.put(day, food);
                } else if (count == 1) {
                    menu.put(day, menu.get(day) + food);
                } else {
                    menu.put(day, menu.get(day) + food);
                }
            } else {
                reader.skipValue();
            }
        }
        reader.endObject();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        try {
            InputStream in = getAssets().open("Week11.json");
            readJsonStream(in);
        }
        catch(IOException e) {
            e.printStackTrace();
        }
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG, "onCreate: Starting");

        mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());
        mViewPager = (ViewPager) findViewById(R.id.container);
        setupViewPager(mViewPager);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);
        setupTabIcons(tabLayout);

    }

1 Ответ

0 голосов
/ 03 апреля 2019
  1. Создайте класс Serializable, реализующий Serializable, содержащий переменные JSON и методы получения.

Например: -

@SerializedName("variableName")
String variableName;

void getVariableName() {
return variableName;
}

Затем передайте объект Serializable во Fragments с помощью конструкторов и используйтезначения во фрагментах с помощью методов получения, созданных, как указано выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...