Ошибка: положить (java .lang.string, список <string>) в хэш-карту нельзя применить к (java .util.list <java .lang.string>) - PullRequest
1 голос
/ 06 апреля 2020

Я начинающий после учебника и просто не могу понять, что я делаю неправильно. Я попытался спросить владельца учебника без какой-либо удачи. Я получаю ошибку, упомянутую в заголовке при попытке построить и расходное меню. ListGroup выдает ошибку от строки 72 до 76 (listItem.put(listGroup).get(0),list1;). Похоже, я неправильно использую HashMap. Я использую Android Stud ios 3.6.1. Пожалуйста, помогите мне. Заранее спасибо!

package com.mystartup.start;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.widget.ExpandableListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class MenuActivity extends AppCompatActivity {
    ExpandableListView expandableListView;
    List<String> listGroup;
    HashMap<String,List<String>> listItem;
    MainAdapter adapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);
        assert getSupportActionBar() != null;   //null check
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);   //show back button

        expandableListView = findViewById(R.id.expanded_listview);
        listGroup = new ArrayList<>();
        listItem = new HashMap<>();
        adapter = new MainAdapter(this,listGroup,listItem);
        expandableListView.setAdapter(adapter);
        initListData();
    }

    private void initListData() {
        listGroup.add(getString(R.string.group1));
        listGroup.add(getString(R.string.group2));
        listGroup.add(getString(R.string.group3));
        listGroup.add(getString(R.string.group4));
        listGroup.add(getString(R.string.group5));

        String[] array;

        List<String> list1 = new ArrayList<>();
        array = getResources().getStringArray(R.array.group1);
        for (String item : array){
            list1.add(item);
        }
        List<String> list2 = new ArrayList<>();
        array = getResources().getStringArray(R.array.group2);
        for (String item : array){
            list2.add(item);
        }
        List<String> list3 = new ArrayList<>();
        array = getResources().getStringArray(R.array.group3);
        for (String item : array){
            list3.add(item);
        }
        List<String> list4 = new ArrayList<>();
        array = getResources().getStringArray(R.array.group4);
        for (String item : array){
            list4.add(item);
        }
        List<String> list5 = new ArrayList<>();
        array = getResources().getStringArray(R.array.group5);
        for (String item : array){
            list5.add(item);
        }
        listItem.put(listGroup).get(0),list1;
        listItem.put(listGroup).get(1),list2;
        listItem.put(listGroup).get(2),list3;
        listItem.put(listGroup).get(3),list4;
        listItem.put(listGroup).get(4),list5;
        adapter.notifyDataSetChanged();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.options_menu, menu);

        return true;
    }
    @Override
    public boolean onSupportNavigateUp(){
        finish();
        return true;
    }

}

Струны. xml код:

<resources>
    <string name="app_name">Start</string>
    <string name="name">Profile:</string>
    <string name="menu">Menu</string>
    <string name="search">Search</string>
    <string name="group1">Group 1</string>
    <string name="group2">Group 2</string>
    <string name="group3">Group 3</string>
    <string name="group4">Group 4</string>
    <string name="group5">Group 5</string>
    <string-array name="group1">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
    </string-array>
    <string-array name="group2">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
    </string-array>
    <string-array name="group3">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
    </string-array>
    <string-array name="group4">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
    </string-array>
    <string-array name="group5">
        <item>item1</item>
        <item>item2</item>
        <item>item3</item>
    </string-array>


</resources>

1 Ответ

0 голосов
/ 06 апреля 2020

Вы используете неправильный синтаксис здесь:

listItem.put(listGroup).get(0),list1;

Метод put из Map API, принимает 2 аргумента. Оба эти аргумента должны быть заключены в следующую строку:

listItem.put((listGroup).get(0), list1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...