java - 如果选择了微调器值,如何在消息框中显示用户 ID

标签 java android android-studio spinner

我想在消息中显示我的用户ID,但选择了微调器值,然后它显示ID,但ID不显示。这是我的代码。

主类代码:

public class AgentProgress extends Activity {

Spinner sp1, sp2;
ListView ls1;
ProgressBar pbbar;
ArrayList<String> names = new ArrayList<String>();
ArrayList<AgentID> web;
ArrayList<String> wordlist;
ArrayAdapter<String> adaptername;
ArrayList<HashMap<String, String>> menuItems1 = new ArrayList<HashMap<String, String>>();
static final String KEY_TABLE = "AGENTDATA";
static final String KEY_AMOUNT = "Parent_Agent_Name";
static final String KEY_USER = "Parent_Agent_Id_Pk";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_agent_progress);

    sp1 = (Spinner) findViewById(R.id.spnames);
    sp2 = (Spinner) findViewById(R.id.spyear);

    ArrayList<String> years = new ArrayList<String>();

    int thisYear = Calendar.getInstance().get(Calendar.YEAR);
    for (int i = thisYear; i >= 2011; i--) {
        years.add(Integer.toString(i));
    }
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, years);


    sp2.setAdapter(adapter);


    pbbar = (ProgressBar) findViewById(R.id.pbbar);
    pbbar.setVisibility(View.GONE);

    ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();

    try {
        web = new ArrayList<AgentID>();
        wordlist = new ArrayList<String>();

        if (connectionAvailable() == true) {

            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                    .permitAll().build();

            StrictMode.setThreadPolicy(policy);

            WebServiceCAll com = new WebServiceCAll();

            AgentID agent = new AgentID();
            // final String string1 = getIntent().getStringExtra("Agentid");

            String strXml = com.LoadAgent("LoadAgent");

            //messageBox("test", strXml);
            XMLParser parser = new XMLParser();
            Document doc = parser.getDomElement(strXml); // getting DOM element

            NodeList nl = doc.getElementsByTagName(KEY_TABLE);
            //String[] arList = null;
            //String[] arListkey = null;
            //  int conttotal=0;
            // looping through all item nodes <item>


            for (int j = 0; j < nl.getLength(); j++) {

                // creating new HashMap


                Map<String, String> map = new HashMap<String, String>();
                // adding each child node to HashMap key => value
                //map.put(KEY_AMOUNT, parser.getValue(e, KEY_AMOUNT));
                //map.put(KEY_USER,parser.getValue(e,KEY_USER));
                // adding HashList to ArrayList
                //menuItems.add(map);

                Element e = (Element) nl.item(j);
                //messageBox("test", "fahad");
                agent.setID(map.put(KEY_USER, parser.getValue(e, KEY_USER)));
                agent.setname(map.put(KEY_AMOUNT, parser.getValue(e, KEY_AMOUNT)));
                names.add(map.put(KEY_AMOUNT, parser.getValue(e, KEY_AMOUNT)));


            }


        } else {
            messageBox("ERROR", "No Internet Service");
        }


    } catch (Exception ex) {

    }


    adaptername = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, names);
    sp1.setAdapter(adaptername);
    AgentProgress.this.runOnUiThread(new Runnable() {
        @Override
        public void run() {
            adaptername.notifyDataSetChanged();
        }
    });


    sp1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int agr, long l) {

            HashMap<String,Object> obj=(HashMap<String,Object>) adaptername.getItem(agr);

            String pr=(String) obj.get(KEY_USER);

            messageBox("",pr);
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });




}


        private void messageBox(String method, String message) {
            AlertDialog.Builder messageBox = new AlertDialog.Builder(this);
            messageBox.setTitle(method);
            messageBox.setMessage(message);
            messageBox.setCancelable(false);
            messageBox.setNeutralButton("OK", null);
            messageBox.show();
        }

        private boolean connectionAvailable() {
            boolean connected = false;
            ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED ||
                    connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ||
                    connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE_SUPL).getState() == NetworkInfo.State.CONNECTED) {
                //we are connected to a network
                connected = true;
            }
            return connected;
}
}

它在 HashMap 上的项目选定监听器中显示错误消息错误是:

incompatible types: String cannot be converted to HashMap<String,Object>

最佳答案

您试图在没有获取适配器的情况下获取Item

替换

HashMap<String,Object> obj=(HashMap<String,Object>) adaptername.getItem(agr);

HashMap<String,Object> obj=(HashMap<String,Object>) adapterView.getAdapter().getItem(agr);

关于java - 如果选择了微调器值,如何在消息框中显示用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39011953/

相关文章:

java - 带有 Jersey 和 tomcat 错误 : 404 的 Restful Web 服务

java - 在 jTextfield 中禁用 'paste'

android - 我可以使用 Kotlin 合成扩展让两个 xml 布局使用相同的 View 吗?

android - 将 Android Studio 与 Vuforia 结合使用

java - Gradle:下载gradle需要 "very long time",activity_main.xml一直显示 "Loading"

java - 从 Java VM 5 更新到 6 确实大大增加了内存消耗

java - 当我从 sqlite 读取数据时,notifyDataSetChanged 不起作用

java - 如何将项目添加到 Android Studio 的抽屉导航模板并为其设置监听器?

Android远程服务不调用服务方法

android - 如何让一个选项淡出但仍然可以在 Android Studio 上点击?