如何将JSON值传递给另一个类
我有一个类(TodosOsPaises),从中获取数据,我想在listView中显示来自JSON的图像,因为我正在使用一个自定义适配器(MyAdapter)并在其上。问题是我无法访问MyAdapter类中的“URL\u IMAGEM” TodosOsPaises类:如何将JSON值传递给另一个类,json,picasso,android,custom-adapter,Json,Picasso,Android,Custom Adapter,我有一个类(TodosOsPaises),从中获取数据,我想在listView中显示来自JSON的图像,因为我正在使用一个自定义适配器(MyAdapter)并在其上。问题是我无法访问MyAdapter类中的“URL\u IMAGEM” TodosOsPaises类: public class TodosOsPaises extends AppCompatActivity{ private String TAG = TodosOsPaises.class.getSimpleName();
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);
}
});
}
}
}
public类todosospaies扩展了AppCompative活动{
private String TAG=TodosOsPaises.class.getSimpleName();
私人对话;
私有ListView lv;
私有静态字符串url=“http://*********/api/contricent/any/country/all?id=siF1uXXEsltXOi5CWlSIzy7EABlnE5iF33bnNmfAHJiYXYNmjY”;
ArrayList列表;
公共字符串URL_IMAGEM;
字符串标识符;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u todos\u os\u paises);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(“附件”);
listaPaises=新的ArrayList();
lv=(ListView)findViewById(R.id.list);
新建GetPaises().execute();
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
开关(item.getItemId()){
案例android.R.id.home:
完成();
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。主菜单,菜单);
menu.findItem(R.id.spinner\u cat).setVisible(false);
menu.findItem(R.id.spinner_pais).setVisible(false);
返回true;
}
私有类GetPaises扩展AsyncTask实现可序列化{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(TodosOsPaises.this);
pDialog.setMessage(“Aguarde…”);
pDialog.setCancelable(假);
pDialog.show();
}
@凌驾
受保护的Void doInBackground(Void…参数){
HttpHandler sh=新的HttpHandler();
最终字符串jsonStr=sh.makeServiceCall(url);
Log.e(标签,“来自URL的响应:+jsonStr”);
if(jsonStr!=null){
试一试{
JSONArray数组=新的JSONArray(jsonStr);
对于(int i=0;i 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;
}
}
String imageFlag = (String) ((Map)getItem(position)).get("URL_IMAGEM");