繁体   English   中英

如何将数据从解析添加到Android ListView

[英]How to add data from parse to an Android ListView

我必须解析一个帐户。 我从解析中获取了数据,但是无法将其添加到ArrayList或ListView中。

我设法将数据放入字符串中,但无法将其添加到列表视图中。

这是我的代码:

public class student_login extends Activity implements View.OnClickListener {

private TextView mTextView;
ArrayList arrayList;;

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

    arrayList = new ArrayList();
    setLisData();

    ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.activity_list_view, arrayList);

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

    Button sub=(Button)findViewById(R.id.button2);
    sub.setOnClickListener(this);

}

private void setLisData() {

    ParseUser currentUser = ParseUser.getCurrentUser();
    String curser = currentUser.getUsername().toString();
    final String sc = currentUser.getString("school");
    Toast.makeText(getApplicationContext(), "Your id is " + sc, Toast.LENGTH_SHORT).show();

    ParseQuery<ParseObject> query = ParseQuery.getQuery("Staff");
    query.whereEqualTo("school", sc);
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            for (ParseObject parseObject : objects) {
                String name = parseObject.getString("Name");
                arrayList.add(name);
                Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show();

            }
        }
    });
}

public void onClick(View v) {

    switch (v.getId()){
        case R.id.button2:

            // r =movie.getRatingStar();
            ParseUser.logOut();
            ParseUser currentUser = ParseUser.getCurrentUser(); // should be null but isn't...
            invalidateOptionsMenu();
            Toast.makeText(getApplicationContext(), "Disconnected...", Toast.LENGTH_LONG).show();

            Intent intent = new Intent(this,Login.class);
            startActivityForResult(intent,0);
            finish();

            break;
    }
}

}

在运行时,输出名称显示在Toast中,但不添加列表视图。谢谢。

在代码中进行以下更改,效果很好

ArrayAdapter adapter

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

    arrayList = new ArrayList();


    adapter = new ArrayAdapter<String>(this, R.layout.activity_list_view, arrayList);

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

    Button sub=(Button)findViewById(R.id.button2);
    sub.setOnClickListener(this);

    setLisData();
}

private void setLisData() {

    ParseUser currentUser = ParseUser.getCurrentUser();
    String curser = currentUser.getUsername().toString();
    final String sc = currentUser.getString("school");
    Toast.makeText(getApplicationContext(), "Your id is " + sc, Toast.LENGTH_SHORT).show();
    if(arrayList.size()>0){
     arrayList.clear();
    }
    ParseQuery<ParseObject> query = ParseQuery.getQuery("Staff");
    query.whereEqualTo("school", sc);
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> objects, ParseException e) {
            for (ParseObject parseObject : objects) {
                String name = parseObject.getString("Name");
                arrayList.add(name);
                Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show();

            }

            if(arrayList.size()>0 && adapter != null){
               adapter.notifyDataSetChanged();
            }
        }
    });


}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM