2015-07-15 3 views
0

Я работаю над приложением социальной сети, и мне нужно иметь активность, которая отображает все данные внутри моей таблицы пользователей на 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"); 
} 
} 
+0

Что делает метод 'loadObjects'? Если он загружает адаптер с данными, которые должны быть заполнены в «ListView», вызывает ли это вызов 'notifyDatasetChanged()' в конце? –

+0

В соответствии с документацией 'loadObjects' должен вызываться только тогда, когда' autoLoad' установлен на 'false'. Ссылка: https://parse.com/docs/android/api/com/parse/ParseQueryAdapter.html –

ответ

0

Ur структура кода не так хорошо. Аналогично у вас есть вызовы класса. Пользователь expes Parseobject и у вас все еще есть метод getUserEmail от объекта пользователя, что.

Я сейчас работаю в javascript. Но я считаю, что в синтаксическом анализе это было похоже на ParseUser.get («ParseKey»);

+0

* Parse = android last line sorry – Daan

+0

Нет класса пользователя, который расширяет ParseUser –

Смежные вопросы