【发布时间】:2018-06-30 19:30:11
【问题描述】:
我想实现一个包含地点名称和票价的计划器之类的东西。我在片段和文本视图中使用 recyclerview。我在 recyclerview 中有一些项目。现在我想为我的计划者取得一个平衡,它应该是所有门票价格的预算总额 = 我的文本视图中的余额,它是片段的。这是我想要实现的图像。
public class planner extends AppCompatActivity {
private RecyclerView mBlogList;
private DatabaseReference mDatabase;
private DatabaseReference mDatabaseCurrentUser;
private DatabaseReference mDatabaseUsers;
private DatabaseReference mDatabaseTicket;
private DatabaseReference mDatabaseLoc;
private DatabaseReference mDatabaseBudget;
private Query mQueryCurrentUser;
String currentUserId;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private DrawerLayout mDraweLayout;
private ActionBarDrawerToggle mToggle;
private TextView mBudget;
private TextView mBalance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_planner);
mDraweLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
mToggle = new ActionBarDrawerToggle(this, mDraweLayout, R.string.open, R.string.close);
mAuth = FirebaseAuth.getInstance();
mDraweLayout.addDrawerListener(mToggle);
mToggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
NavigationView mNavigationView = (NavigationView) findViewById(R.id.nav_menu);
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case(R.id.nav_home):
Intent home = new Intent(getApplicationContext(), home.class);
startActivity(home);
break;
case(R.id.nav_account):
Intent acc = new Intent(getApplicationContext(), updateTourist.class);
startActivity(acc);
break;
case(R.id.nav_go):
Intent goActivity = new Intent(getApplicationContext(), placepicker.class);
startActivity(goActivity);
break;
case(R.id.nav_planner):
Intent planActivity = new Intent(getApplicationContext(), planner.class);
startActivity(planActivity);
break;
case(R.id.nav_budget):
Intent budget = new Intent(getApplicationContext(), createBudget.class);
startActivity(budget);
break;
case(R.id.nav_logout):
logout();
break;
}
return true;
}
});
mAuth = FirebaseAuth.getInstance();
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
if (firebaseAuth.getCurrentUser() == null) {
Intent loginIntent = new Intent(planner.this, login.class);
loginIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(loginIntent);
}
}
};
mDatabase = FirebaseDatabase.getInstance().getReference().child("Location");
mDatabaseUsers = FirebaseDatabase.getInstance().getReference().child("Tourist");
currentUserId = mAuth.getCurrentUser().getUid();
mDatabaseCurrentUser = FirebaseDatabase.getInstance().getReference().child("Location");
mQueryCurrentUser = mDatabaseCurrentUser.orderByChild("uid").equalTo(currentUserId);
mBlogList = (RecyclerView) findViewById(R.id.blog_list);
mDatabaseUsers.keepSynced(true);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setReverseLayout(true);
layoutManager.setStackFromEnd(true);
mBlogList.setHasFixedSize(true);
mBlogList.setLayoutManager(layoutManager);
budget();
checkUserExist();
}
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
FirebaseRecyclerAdapter<location, BlogViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<location, BlogViewHolder>(
location.class,
R.layout.location_list,
BlogViewHolder.class,
mQueryCurrentUser
) {
@Override
protected void populateViewHolder(BlogViewHolder viewHolder, location model, final int position) {
final String post_key = getRef(position).getKey();
viewHolder.setName(model.getName());
viewHolder.setAddress(model.getAddress());
viewHolder.setTicket(model.getTicket());
if
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent singlePlanner = new Intent(planner.this, deleteLocation.class);
singlePlanner.putExtra("plan_id", post_key);
startActivity(singlePlanner);
}
});
}
};
mBlogList.setAdapter(firebaseRecyclerAdapter);
}
//recyclerview
public static class BlogViewHolder extends RecyclerView.ViewHolder {
View mView;
FirebaseAuth mAuth;
public BlogViewHolder(View itemView) {
super(itemView);
mView = itemView;
mAuth = FirebaseAuth.getInstance();
}
public void setName(String Name) {
TextView post_locName = (TextView) mView.findViewById(R.id.post_title);
post_locName.setText(Name);
}
public void setAddress(String Address) {
TextView post_locAdd = (TextView) mView.findViewById(R.id.post_desc);
post_locAdd.setText(Address);
}
public void setTicket(final Integer ticket){
TextView post_ticket = (TextView) mView.findViewById(R.id.post_ticket);
post_ticket.setText(Integer.toString(ticket));
}
}
//check user exist
private void checkUserExist() {
if (mAuth.getCurrentUser() != null) {
final String user_id = mAuth.getCurrentUser().getUid();
mDatabaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (mAuth.getCurrentUser().getUid().equals(user_id)) {
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}
//retrieve budget
private void budget()
{
mDatabaseBudget = FirebaseDatabase.getInstance().getReference().child("Plan").child("createPlan").child("plan_budget");;
mDatabaseBudget.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
TextView mBudget = (TextView) findViewById(R.id.post_budget);
Integer value = dataSnapshot.getValue(Integer.class);
mBudget.setText(Integer.toString(value));
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == R.id.action_add){
startActivity(new Intent(planner.this, placepicker.class));
}
if(mToggle.onOptionsItemSelected(item)){
return true;
}
return super.onOptionsItemSelected(item);
}
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu, menu);
return super.onCreateOptionsMenu(menu);
}
private void logout() {
mAuth.signOut();
}
}
【问题讨论】:
标签: android listview firebase firebase-realtime-database android-recyclerview