如何将 JSON 值传递给另一个类

白色的

我有这个类 (TodosOsPaises),我从获取数据,我想在 listView 中显示来自 JSON 的图像,因为我正在使用自定义适配器 (MyAdapter) 并在其上使用问题是我无法访问 MyAdapter 类中的“URL_IMAGEM”

TodosOsPaises 类:

public class TodosOsPaises extends AppCompatActivity{
    private String TAG = TodosOsPaises.class.getSimpleName();
    private ProgressDialog pDialog;
    private ListView lv;
    private static String url = "http://**********/api/continent/any/country/all?id=siF1uXXEsltXOi5CWlSIzy7EABlnE5iF33bnNmfAHJiYXYNmjY";
    ArrayList<HashMap<String, String>> listaPaises;
    public String URL_IMAGEM;
    String Designacao;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_todos_os_paises);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setTitle("Países");
        listaPaises = new ArrayList<>();
        lv = (ListView) findViewById(R.id.list);
        new GetPaises().execute();
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        menu.findItem(R.id.spinner_cat).setVisible(false);
        menu.findItem(R.id.spinner_pais).setVisible(false);
        return true;
    }

    private class GetPaises extends AsyncTask<Void, Void, Void> implements Serializable {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(TodosOsPaises.this);
            pDialog.setMessage("Aguarde...");
            pDialog.setCancelable(false);
            pDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            HttpHandler sh = new HttpHandler();
            final String jsonStr = sh.makeServiceCall(url);
            Log.e(TAG, "Response from URL: " + jsonStr);
            if (jsonStr != null) {
                try {
                    JSONArray array = new JSONArray(jsonStr);
                    for (int i = 0; i < array.length(); i++) {
                        JSONObject jsonObject = array.getJSONObject(i);
                        JSONArray paises = jsonObject.optJSONArray("paises");

                        if (paises != null) {
                            for (int j = 0; j < paises.length(); j++) {
                                JSONObject jsonObject1 = paises.getJSONObject(j);

                                String K_PAIS = jsonObject1.getString("K_PAIS");
                                Designacao = jsonObject1.getString("Designacao");
                                //String URL_IMAGE_SMALL = jsonObject1.getString("URL_IMAGE_SMALL");
                                URL_IMAGEM = ("http://**********t" + jsonObject1.getString("URL_IMAGE_SMALL")).toString();
                                String Coord_LAT = jsonObject1.getString("Coord_LAT");
                                String Coord_LONG = jsonObject1.getString("Coord_LONG");
                                String Coord_Zoom = jsonObject1.getString("Coord_Zoom");


                                HashMap<String, String> pais = new HashMap<>();

                                pais.put("K_PAIS", K_PAIS);
                                pais.put("Designacao", Designacao);
                                //pais.put("URL_IMAGE_SMALL", URL_IMAGE_SMALL);
                                pais.put("URL_IMAGEM", URL_IMAGEM);
                                pais.put("Coord_LAT", Coord_LAT);
                                pais.put("Coord_LONG", Coord_LONG);
                                pais.put("Coord_Zoom", Coord_Zoom);

                                listaPaises.add(pais);
                            }
                        }
                    }
                } catch (final JSONException e) {
                    Log.e(TAG, "Json parsing error: " + e.getMessage());
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getApplicationContext(), "Json parsin error: " + e.getMessage(), Toast.LENGTH_LONG).show();
                        }
                    });
                }

            } else {
                Log.e(TAG, "Couldn't get json from server.");
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), "Couldn't get json from server. Check LogCat for possible errpr!", Toast.LENGTH_LONG).show();
                    }
                });
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            if (pDialog.isShowing()) {
                pDialog.dismiss();
            }


           ListView list= (ListView) (TodosOsPaises.this).findViewById(R.id.list);
            ListAdapter adapter =
                    new MyAdapter(
                            (TodosOsPaises.this),
                            listaPaises,
                            R.layout.list_item,
                            new String[]{Designacao},
                            new int[]{R.id.Designacao});
            list.setAdapter(adapter);





            /*ListAdapter adapter = new SimpleAdapter(
                    TodosOsPaises.this,
                    listaPaises,
                    R.layout.list_item,
                    new String[]{"Designacao", },
                    new int[]{R.id.Designacao, });
            lv.setAdapter(adapter);
            lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> pare, View view, int position, long id) {
                    Intent intent = new Intent(TodosOsPaises.this, MapsActivity.class);
                    intent.putExtra("data", listaPaises.get(position));
                    startActivity(intent);
                }
            });*/
            Collections.sort(listaPaises, new Comparator<HashMap<String, String>>() {
                @Override
                public int compare(HashMap<String, String> first, HashMap<String, String> second) {
                    String firstValue = first.get("Designacao");
                    String secondValue = second.get("Designacao");
                    return firstValue.compareTo(secondValue);
                }
            });
        }
    }
}

MyAdapter 类:

 public class MyAdapter extends SimpleAdapter {
    public MyAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
        super(context, data, resource, from, to);
    }

    public View getView(int position, View convertView, ViewGroup parent){
        View v = super.getView(position, convertView, parent);

        ImageView img = (ImageView) v.getTag();
        if (img == null){
            img = (ImageView) v.findViewById(R.id.imageView7);
            v.setTag(img);
        }


        String imageFlag = (String) ((Map)getItem(position)).get(URL_IMAGEM); <<-- here it says "Cannot resolve symbol 'URL_IMAGEM'"
        Picasso.with(v.getContext()).load(imageFlag).into(img);

        return v;
    }
}

发生这种情况,因为我没有定义 URL_IMAGEM,我想我需要从 TodosOsPaises 获取它。我是 android 的初学者,所以如果我做错了什么,我很抱歉

阿潘·夏尔马
 String imageFlag = (String) ((Map)getItem(position)).get("URL_IMAGEM");

那是因为它们在您的适配器中没有该名称的字符串变量。您必须提供字符串名称 itseld

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将 json 的某个值传递给另一个活动

如何将类属性值传递给另一个类中的方法

如何使用RESTSharp将JSON字符串传递给另一个API?

如何将一个函数的值传递给另一个函数?

Flutter:如何将不是最终值的值传递给另一个类?

如何将参数传递给CDI中另一个类的注入类?

gmock:如何将模拟类的指针传递给另一个类?

如何将值从另一个文件或命令提示符传递给类

如何将Sequelize查询的输出传递给另一个函数,该函数将返回带有express的JSON对象?

将 json 对象传递给另一个函数以在 for 循环中调用

将json对象传递给另一个html

如何在传递给另一个类的类上设置属性的值?

如何将JToggleButton传递给另一个类?

如何将UIViewController传递给Swift中的另一个类?

Tkinter:如何将StringVar传递给另一个类?

如何将C#泛型类型传递给另一个类

如何将模型的genericgenerator中的参数传递给另一个类(IdGenerator)

如何将字符串从onclick事件传递给另一个类

我应该如何将变量传递给另一个类?

如何将编写的对象传递给另一个类的构造函数?

在 React 中如何将 Id 传递给另一个页面类组件

如何使用空手道将的背景响应值传递给函数值中的另一个功能json

使用org.json.simple json解析器将while循环中的变量传递给另一个类

将数组传递给另一个类

如何将道具传递给一个 React 类到另一个 React 类?

将json对象的一个组件传递给另一个vue.js

当一个文件中的值用作另一文件的参数时,如何将多个JSON文件传递给Onservable数组?

如何将另一个值传递给表单验证方法?

如何将输入的值传递给 blazor webassembly 中的另一个输入?