如何使用 listview 显示用户列表

Posted

技术标签:

【中文标题】如何使用 listview 显示用户列表【英文标题】:How to show a list of users using listview 【发布时间】:2015-10-03 23:09:17 【问题描述】:

我正在开发一个社交网络应用程序,我需要一个活动来显示 parse.com 中我的用户表中的所有数据。我试过这段代码,但结果总是一个空白的空白屏幕。 这是活动的代码

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();
 
  [...]

这是列表视图的布局文件

<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:id="@+id/usslist">
<ListView
android:layout_
android:layout_
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.

最后这是列表视图项布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_
android:layout_
android:id="@+id/userittem">

<com.parse.ParseImageView
    android:id="@+id/imageView"
    android:layout_
    android:layout_
    android:layout_alignParentTop="true"
    android:layout_alignParentStart="true" />

<TextView
    android:layout_
    android:layout_
    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_
    android:layout_
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="mohamedsherifhazem@gmail.com"
    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 时调用。参考:parse.com/docs/android/api/com/parse/ParseQueryAdapter.html 【参考方案1】:

你的代码结构不太好。同样,您有一个名为 User 的类 消耗 Parseobject 并且你仍然有来自用户对象的方法 getUserEmail 什么。

我现在正在使用 javascript。 但我相信解析它就像 ParseUser.get("ParseKey");

【讨论】:

*Parse = android 最后一行对不起 实际上没有用户类扩展 ParseUser

以上是关于如何使用 listview 显示用户列表的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Firebase 检索数据到 ListView(使用自定义数组适配器)

如何强制 ListView 忽略单击/不突出显示单击的项目?

安卓ListView在行末添加文本。

如何使用里面的 ListView 滚动 NestedScrollView?

listview刷新数据的时候如何才能不从头显示啊

如何使用 ScrollController 检查 ListView 滚动速度