リストをファイヤーベースに戻すと、リストチームの最初の要素がnullに設定されます。 firebaseでは、リストに最初の要素があることを示しますが、実際のプログラムでは、バックアップした後、最初の要素がnullになることが示されます。これはそれを管理するアクティビティです。 addTeamメソッドは、私がチームを追加し、firebaseにバックアップするところです。ファーストベースにバックアップした後、最初の要素をヌルに設定します
public class TournamentManager extends AppCompatActivity {
Firebase ref;
FloatingActionButton fab;
EditText teamNumber;
Button cancel;
Button addTeam;
public static List teams;
ArrayAdapter <String> adapter;
ListView list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tournament_manager);
Toolbar b = (Toolbar) findViewById(R.id.toolbar);
String extra = getIntent().getStringExtra("Tournament Name");
b.setTitle(extra);
setSupportActionBar(b);
int position = getIntent().getIntExtra("Position", 0);
ref = AdminMain.ref.child("" + position).child("teams");
fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addTeamDialog();
if (teams == null){
//hi
}
}
});
list = (ListView) findViewById(R.id.teamList);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
teams = (ArrayList) dataSnapshot.getValue();
if (teams == null){
teams = new ArrayList();
}
else {
for (int i = 0; i < teams.size(); i++) {
String temp = (String) (((HashMap) teams.get(i)).get("name"));
teams.set(i, new Team(temp));
}
}
setAdapter();
}
@Override
public void onCancelled(FirebaseError firebaseError) {
//do nothing
}
});
}
public void setAdapter(){
adapter = new ArrayAdapter(TournamentManager.this, android.R.layout.simple_list_item_1, teams);
list.setAdapter(adapter);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
teams = teams;
}
});
adapter.notifyDataSetChanged();
}
public void addTeamDialog(){
LayoutInflater inflater = (LayoutInflater) getSystemService (Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.activity_add_team, null);
final AlertDialog diag = new AlertDialog.Builder(this)
.setView(v)
.create();
diag.show();
teamNumber = (EditText) diag.findViewById (R.id.editText);
addTeam = (Button) diag.findViewById(R.id.addTeam);
addTeam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addTeam(teamNumber.getText().toString());
diag.hide();
}
});
cancel = (Button) diag.findViewById(R.id.cancel);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
diag.hide();
}
});
}
public void addTeam(String s){
teams.add(new Team(s));
ref.setValue(teams);
if (teams.get(0) == null){
//hi
}
}
}
クラス「チーム」の定義を投稿してください。 –
複数のチームを追加すると、それは最初にヌルとして表示されますか? –
アダプターなどのエラーのためにアプリがクラッシュしているので、実際には2つ以上のチームを追加することは実際できません。私はあなたに戻ることができる前に、これらの他の問題をデバッグしようとします。ご協力いただきありがとうございます。 – kmindspark