【发布时间】:2018-01-06 08:43:52
【问题描述】:
OnCreateView 方法
ListView usersList;
TextView noUsersText;
ArrayList<String> al = new ArrayList<>();
int totalUsers = 0;
ProgressDialog mProgressDialogue;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_contacts, container, false);
usersList = (ListView)rootView.findViewById(R.id.usersList);
noUsersText = (TextView)rootView.findViewById(R.id.noUsersText);
mProgressDialogue = new ProgressDialog(getActivity());
mProgressDialogue.setMessage("Loading...");
mProgressDialogue.show();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("Users");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<String> arrayList = new ArrayList<>();
ListView listView = (ListView) rootView.findViewById(R.id.usersList);
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, arrayList);
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String name = ds.child("Name").getValue().toString();
// Log.d("TAG", name);
arrayList.add(name);
}
listView.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getActivity(),"Please Check Your Internet Connection",Toast.LENGTH_SHORT).show();
}
};
usersRef.addListenerForSingleValueEvent(eventListener);
usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
UserDetails.chatWith = al.get(position);
Intent intent = new Intent(getActivity(), Chat.class);
startActivity(intent);
}
});
return rootView;
}
用户详情
public class UserDetails {
static String phonenumber = "";
static String chatWith = "";
}
我还是个初学者。只是尝试一个使用电话号码进行身份验证的简单聊天应用程序。注册和登录似乎很好。即使更新用户个人资料也很好。然后我得到这个片段,它向用户显示使用该应用程序的联系人列表。此片段成功地从数据库中获取名称列表并显示它,但是当用户单击其中一个名称时,它会显示异常。用户应该被带到 chat.class 那里他将能够与其他人聊天(希望如此) 请帮忙... 在 UserDetails.chatWith = al.get(Position) 行中显示和 IndexOUTOfBounds 异常 索引 0 无效,大小为 0
【问题讨论】:
-
显示你的 logcat 并且不要在 onDataChange 中设置适配器
-
你在哪里定义了“al”?缺少某些代码。
-
嘿 Courtney,我们需要有关
UserDetails类以及al变量的信息。请提供更多代码。 -
请看已编辑的
-
@CourtneyMiller 您没有向
al添加元素,因此其大小为0
标签: android database firebase firebase-realtime-database indexoutofboundsexception