如何使用 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 忽略单击/不突出显示单击的项目?