2017-05-23 1 views
0

J'ai une colonne arraylist sur l'analyse que je voudrais mettre à jour comme indiqué dans le code suivant. Toutefois, dans la colonne parse, il affiche uniquement "[]" après la mise à jour de la colonne en cliquant sur une sélection d'utilisateurs dans la liste. Merci.Arraylist sur parseserver n'est pas mis à jour

List<String> users = new ArrayList<>(); 


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



     ListView listView = (ListView)findViewById(R.id.listView); 


     if (ParseUser.getCurrentUser().getList("isfollowing") == null){ 
      List<String> emptyList = new ArrayList<>(); 
      ParseUser.getCurrentUser().put("isfollowing", emptyList); 
      ParseUser.getCurrentUser().saveInBackground(); 
     } 


     listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE); 
     final ArrayAdapter<String> arrayAdapterSelected = new ArrayAdapter<String>(getApplicationContext(), 
       android.R.layout.simple_list_item_checked, users); 
     listView.setAdapter(arrayAdapterSelected); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       CheckedTextView textview = (CheckedTextView)view; 

       //CHECK IF TEXTVIEW IS CHECKED 

       if (textview.isChecked()){ 

        ParseUser.getCurrentUser().getList("isfollowing").add(users.get(position)); 
        ParseUser.getCurrentUser().saveInBackground(); 
       }else{ 
        ParseUser.getCurrentUser().getList("isfollowing").remove(users.get(position)); 
        ParseUser.getCurrentUser().saveInBackground(); 
       } 


      } 
     }); 

     users.clear(); 
     ParseQuery<ParseUser> query = ParseUser.getQuery(); 

     query.whereNotEqualTo("username", ParseUser.getCurrentUser().getUsername()); 
     query.findInBackground(new FindCallback<ParseUser>() { 
      @Override 
      public String done(List<ParseUser> objects, ParseException e) { 

       if (e == null) { 

        if (objects.size() > 0) { 

         for (ParseUser object : objects) { 
          users.add(object.getUsername()); 
         } 
         arrayAdapterSelected.notifyDataSetChanged(); 
        } 
       } 
       return null; 
      } 
     }); 
    }} 

Répondre

0

Malheureusement, la fonction d'ajout ne semble pas travailler avec beaucoup de gens, y compris moi, donc une solution à ce problème est la création d'une liste, puis la mise à être égale à la liste des utilisateurs en cours dans le sur méthode de création, puis la mise à jour de cette liste et enfin le réglage de la liste des utilisateurs en cours au nouveau et mis à jour un, par exemple:

private static ArrayList<String> array = new ArrayList<>(); 

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

    array = ParseUser.getCurrentUser().getList("isfollowing"); 
    array.add("New Item 1"); 
    array.add("New Item 2"); 
    array.add("New Item 3"); 

    ParseUser.getCurrentUser().put("isfollowing" , array); 
    ParseUser.getCurrentUser().saveInBackground(); 
} 

vous devez faire tout le travail sur le ArrayList créé et une fois que toutes les modifications nécessaires ont été réalisés puis mettez à jour la liste "issuivante" de l'utilisateur avec le tableau créé et enregistrez