Andy Wooller
Andy Wooller

Reputation: 3

ParseQueryAdapter displaying blank list

So I've followed this tutorial on creating a custom ParseQueryAdapter but for some reason my listview is not being populated.

Listview Activity

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

    //Initialize the subclass of PQM
    listViewAdapter = new ListViewAdapter(this);

    //Initialize ListView and set view to listadapter
    usersListView = (ListView) findViewById(R.id.usersListView);
    usersListView.setAdapter(listViewAdapter);

ListViewAdapter

public class ListViewAdapter extends ParseQueryAdapter<ParseObject> {

public ListViewAdapter(Context context){
    //Use Query factory to constuct a PQA that will not include the current user
    super(context, new ParseQueryAdapter.QueryFactory<ParseObject>(){
       public ParseQuery create(){
           String currentUserId = ParseUser.getCurrentUser().getObjectId();
           ParseQuery query = new ParseQuery("User");
           query.whereNotEqualTo("objectId", currentUserId);
           return query;

       }
    });
}

//Customise the layout by overriding getItemView
@Override
public View getItemView(ParseObject object, View v, ViewGroup parent){
    if (v == null){
        v = View.inflate(getContext(), R.layout.user_list_items, null);
    }

    super.getItemView(object, v, parent);

    //Add the username textview
    TextView userListItem = (TextView) v.findViewById(R.id.text1);
    userListItem.setText(object.getString("username"));

    //Add the status textview
    TextView userListSubItem = (TextView) v.findViewById(R.id.userListSubItem);
    userListSubItem.setText(object.get("status").toString());
    return v;
}

}

activity_listusers XML file

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/logout"
        android:id="@+id/logoutButton"
        android:gravity="center_vertical|center_horizontal"
        android:layout_gravity="center_horizontal"
        android:background="@color/dark_gray"
        android:textSize="24sp"
        android:padding="15dp"
        android:textColor="@color/heartbeat_red" />

    <ListView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="16dp"
        tools:context="com.sinch.messagingtutorialskeleton.ListUsersActivity"
        android:background="#ffffff"
        android:id="@+id/usersListView"
        >
    </ListView>

</LinearLayout>

User_List_Items XML file

    <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView
        android:id="@+id/text1"
        android:textColor="#a9a9a9"
        android:padding="16dp"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:textSize="20sp">
    </TextView>

    <TextView
        android:id="@+id/userListSubItem"
        android:textColor="#a9a9a9"
        android:padding="16dp"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/text1"
        android:textSize="16sp">
    </TextView>

</LinearLayout>

I'm relatively new to Android and very new to Parse, I cant see where I am going wrong, Parse works fine as I have an activity beforehand that uses Parse to login.

Many Thanks,

EDIT: So I just created a new class in Parse.com and queried that instead of the user and that which worked, not sure if you cant use ParseQueryAdapter on the User class or if the way I'm trying to query it is wrong?

Upvotes: 0

Views: 132

Answers (1)

Andy Wooller
Andy Wooller

Reputation: 3

Thanks to @cYrixmorten, you must refer to the user class as _User when constructing a normal parse query.

Line changed from

ParseQuery query = new ParseQuery("User");

To

ParseQuery query = new ParseQuery("_User");

Upvotes: 0

Related Questions