Я работаю над приложением социальной сети, и мне нужно иметь активность, которая отображает все данные внутри моей таблицы пользователей на parse.com. Я пробовал этот код, но результат всегда пустой пустой белый экран. Это код активностиКак показать список пользователей, использующих listview
public class UsersList extends Activity {
private ParseQueryAdapter<Userr> mainAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_users_list);
ListView listhope = (ListView) findViewById(R.id.userlistlist);
mainAdapter = new MyParseUserListAdaptor(this, Userr.class);
listhope.setAdapter(mainAdapter);
mainAdapter.loadObjects();
}
[...]
}
и это файл макета для ListView
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/usslist">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/userlistlist"
/>
</LinearLayout>
и это пользовательский адаптер я создал
public class MyParseUserListAdaptor extends ParseQueryAdapter<Userr> {
public MyParseUserListAdaptor(Context context,
Class<?extends ParseUser> clazz) {
super(context, clazz);
// TODO Auto-generated constructor stub
}
@Override
public View getItemView(Userr userme, View v, ViewGroup parent) {
if (v == null) {
v = View.inflate(getContext(), R.layout.usertem, null);
}
super.getItemView(userme, v, parent);
ParseImageView userlistpic = (ParseImageView) v.findViewById(R.id.imageView);
TextView userListName = (TextView) v.findViewById(R.id.userName);
TextView userListEmail = (TextView) v.findViewById(R.id.userEmail);
userlistpic.setParseFile(userme.getPhotoFile());
userListName.setText(userme.getUser_Name(ParseUser.getCurrentUser()));
userListEmail.setText(userme.getUser_Email(ParseUser.getCurrentUser()));
userlistpic.loadInBackground();
return v;
}
}
и это мой класс Userr
@ParseClassName("Userr")
public class Userr extends ParseUser {
public Userr() {
// A default constructor is required.
}
и, наконец, это является расположение ListView товаром
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/userittem">
<com.parse.ParseImageView
android:id="@+id/imageView"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Mohamed Sherif"
android:id="@+id/userName"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/imageView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="[email protected]"
android:id="@+id/userEmail"
android:layout_below="@+id/userName"
android:layout_toEndOf="@+id/imageView" />
</RelativeLayout>
Код:
public String getUser_Name(ParseUser user) {
String name = user.get("name").toString();
if (name != null)
return name;
else return "Anonymous";
}
public String getUser_Email(ParseUser user) {
String email = user.getEmail();
if (email != null)
return email;
else return "Anonymous";
}
public ParseFile getPhotoFile() {
return getParseFile("profile_picture");
}
}
Что делает метод 'loadObjects'? Если он загружает адаптер с данными, которые должны быть заполнены в «ListView», вызывает ли это вызов 'notifyDatasetChanged()' в конце? –
В соответствии с документацией 'loadObjects' должен вызываться только тогда, когда' autoLoad' установлен на 'false'. Ссылка: https://parse.com/docs/android/api/com/parse/ParseQueryAdapter.html –