ArrayAdapter - 拆分2个字符串

时间:2017-10-03 10:47:05

标签: android android-arrayadapter

[解决] 我需要一点帮助。 我有一个包含2个字符串的ArrayAdapter,我想向用户显示ArrayAdapter的第一部分,当用户点击某个特定项目时,我想获取该特定项目的ID并发布。 在下图中,您可以看到我想向用户显示JAVA,并希望在用户点击按钮时发送JAVA ID。

enter image description here

代码:

 private class getSkillsList extends AsyncTask<String, Void, Void> {

    private String dataFetchedFromURL = "";

    @Override
    protected Void doInBackground(String... skillListURL) {

        try {
            String newUrl = skillListURL[0];
            URL url = new URL(newUrl);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String line = "";
            while (line != null) {
                line = bufferedReader.readLine();
                dataFetchedFromURL = dataFetchedFromURL + line;
            }
            System.out.print("DATA: " + dataFetchedFromURL);
            JSONArray root = new JSONArray(dataFetchedFromURL);
            skillList = new ArrayList<String>();
            for (int i = 0; i < root.length(); i++) {
                JSONObject jsonObjectHoldingCountries = root.getJSONObject(i);
HashMap<String, Integer> skillsMap = new HashMap<>();                   
skillsMap.put(jsonObjectHoldingCountries.optString("lookupValue"), jsonObjectHoldingCountries.getInt("lookupValueId"));
            }
        } catch (IOException | JSONException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
ArrayAdapter<String> adapter;
        for(int i=0; i<skillsMap.size();i++){
            skillList.add(String.valueOf(skillsMap.get(i)));
        }
            adapter = new ArrayAdapter<String>(Skills.this, android.R.layout.simple_list_item_1, skillList);
        acSkillTextView.setAdapter(adapter);
    }
}

1更新:

现在我已经更新了我的代码并将JSON响应存储在HashMap中,第一个键是String,Value是Integer。 当我尝试在后执行方法中在适配器中添加这些Hashmap时,它会在autocompletetext下拉列表中显示NULL。

2更新:

我得到了我的解决方案,我首先将所有收到的数据插入到HashMap中,然后从hashmap中将键值插入到数组中,并使用适配器在下拉列表中显示该数组。干杯!谢谢你们:))

1 个答案:

答案 0 :(得分:1)

尝试使用名称和id的hashmap以及只使用名称的数组。根据位置,你可以从hashmap获取你的id。

让我解释一下。

 hashmap.put("java","350");
 hashmap.put("c++","351");

现在制作一个数据数组

array.add("java");
array.add("c++");

现在在选择位置1时,您可以获得相应的ID。