Reputation: 3
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
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