Tengo un par de problemas con el ListView
1) En el ListView salen asignaturas y quiero que si estas tienen un aviso se marquen con un color distinto, ya sea cambiando el background o las letras de color. El parámetro lo recibo en un JSONArray. Y si este parámetro “avis” tiene valor “1” el background de esa celda sea de otro color. Espero que me puedan ayudar.
2) Cada vez que hago click en un item de la ListView, vuelvo a atrás y y al volver a clickear en otro item se me carga la información del anterior. He intentado usar “notifydatachanged” pero no consigo que me funcione.
GRACIAAAAAS
public class Subjects_list extends AppCompatActivity implements AdapterView.OnItemClickListener { public static final String ip = "192.168.43.110"; public static Subjects ls; private List<HashMap<String, String>> SubjectList = new ArrayList<>(); private ListView mListView; private ProgressDialog pDialog; public static final String EXTRA_MESSAGE = ""; private static final String KEY_FULLNAME = "Nom complet"; private static final String KEY_INITIALS = "Inicials"; private static final String KEY_CREDITS = "Credits"; private static final String KEY_COORDINADOR = "Coordinador"; public String avis =""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_subjects_list); Intent intent = getIntent(); String message = intent.getStringExtra(Portal.EXTRA_MESSAGE); this.setTitle("LA TEVA MATRICULA"); mListView = (ListView) findViewById(R.id.subjectslist); mListView.setOnItemClickListener(this); new getSubjectslistAsynTask(this).execute(message); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = new Intent(this, Avis.class); TextView Initials = (TextView) findViewById(R.id.initials); String InitialsValue = Initials.getText().toString(); intent.putExtra(EXTRA_MESSAGE, InitialsValue); mListView.deferNotifyDataSetChanged(); startActivity(intent); } private class getSubjectslistAsynTask extends AsyncTask<String, Void, String> { Context context; InputStream stream = null; String str = ""; private getSubjectslistAsynTask(Context context) { this.context = context; } @Override protected void onPreExecute() { super.onPreExecute(); // Showing progress dialog pDialog = new ProgressDialog(Subjects_list.this); pDialog.setMessage("Carregant..."); pDialog.setCancelable(false); pDialog.show(); } @Override protected String doInBackground(String... urls) { try { String str = loadFromNetwork(urls[0]); JSONArray jsonArray = new JSONArray(str); if ( str != null){ for (int i = 0; i < jsonArray.length(); i++) { JSONObject s = jsonArray.getJSONObject(i); String initials = s.getString("initials"); String fullname = s.getString("fullname"); String credits = s.getString("credits"); String coordinator = s.getString("coordinator"); avis = s.getString("avis"); HashMap<String, String> subject = new HashMap<>(); subject.put("initials",initials); subject.put("fullname",fullname); subject.put("credits",credits); subject.put("coordinator",coordinator); //subject.put("avis",avis); SubjectList.add(subject); } } } catch (IOException e) { return e.getMessage(); } catch (JSONException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); if (pDialog.isShowing()) pDialog.dismiss(); // onLoaded(ls.listsubjects); ListAdapter adapter = new SimpleAdapter( Subjects_list.this, SubjectList, R.layout.activity_list_subjectsuser, new String[]{"initials","fullname", "credits","coordinator","avis"}, new int[]{ R.id.initials,R.id.fullname, R.id.credits, R.id.coordinator,R.id.avis}); mListView.setAdapter(adapter); } }