parseserver上的Arraylist没有更新

时间:2017-05-23 14:00:55

标签: java android arraylist parse-server

我在解析时有一个arraylist列,我想要更新,如下面的代码所示。但是,在解析列中它只显示" []"更新列后,单击列表视图中的一组用户。感谢。

    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;
            }
        });
    }} 

1 个答案:

答案 0 :(得分:0)

不幸的是,添加功能似乎不适用于包括我在内的很多人,因此该问题的解决方案是创建一个List,然后将其设置为等于on create方法中的当前用户列表,然后更新该列表并最终将当前用户列表设置为新创建和更新的列表,例如:

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();
}

您应该对创建的ArrayList执行所有工作,并且在完成所有必需的更改后,使用创建的数组更新用户“isfollowing”列表并保存