【发布时间】:2018-03-26 15:10:45
【问题描述】:
public class HomeScreen_Contacts extends Fragment {
TextView noUsersText;
ProgressDialog mProgressDialogue;
FirebaseAuth mAuth;
FirebaseUser currentUser;
String UID;
String name;
String rId;
ArrayAdapter<String> adapter;
ListView usersList;
ArrayList<String> al = new ArrayList<>();
ListView listView;
DatabaseReference rootRef;
@Override
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);
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser();
UID = mAuth.getCurrentUser().getUid();
mProgressDialogue = new ProgressDialog(getActivity());
mProgressDialogue.setMessage("Loading...");
mProgressDialogue.show();
rootRef = FirebaseDatabase.getInstance().getReference();
listView = (ListView) rootView.findViewById(R.id.usersList);
readData(new MyCallback() {
@Override
public void onCallback(List<String> al) {
for (String name : al) {
Log.d("TAG", name);
}
}
});
usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(getActivity(), Chat.class);
intent.putExtra("Recievers_Id", rId);
intent.putExtra("Recievers_Name", name);
Log.d("RID", rId);
Log.d("RN", name);
startActivity(intent);
}
});
return rootView;
}
public void readData(final MyCallback myCallback) {
DatabaseReference usersRef = rootRef.child("Users");
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, al);
for (DataSnapshot ds : dataSnapshot.getChildren()) {
name = ds.child("Name").getValue().toString();
rId = ds.child("Phone_Number").getValue().toString();
al.add(name);
}
listView.setAdapter(adapter);
mProgressDialogue.dismiss();
myCallback.onCallback(al);
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getActivity(), "Please Check Your Internet Connection", Toast.LENGTH_SHORT).show();
}
};
usersRef.addListenerForSingleValueEvent(eventListener);
}
public interface MyCallback {
void onCallback(List<String> al);
}
}
无论我点击哪个项目,都会将我引导到同一个房间。我想改变它。我希望用户根据他在列表视图中单击的项目去不同的房间。我的逻辑正确吗?如果是的话我哪里出错了
按照教程进行操作。不确定 myCallback 下应该包含什么...留空...你能帮我吗
再次更新了我的代码...有什么问题吗?
【问题讨论】:
-
我的逻辑正确吗?。 调试您的代码 .
-
无论我点击哪个项目... Logcat 只返回一个数字和一个名称。我无法弄清楚为什么
-
添加这个有问题的。因为现在对我来说它看起来像是一个分配任务。
-
利用
int position参数onItemClick()。您必须提供自定义适配器实现来显示这两个字段。关注This。 -
我认为自定义适配器仅适用于回收商。没关系。请问我可以知道如何在我的项目中实现它吗?抱歉还是个学习者
标签: java android database firebase firebase-realtime-database