2016-06-13 9 views
0

リストをファイヤーベースに戻すと、リストチームの最初の要素が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 
     } 
    } 
} 
+0

クラス「チーム」の定義を投稿してください。 –

+0

複数のチームを追加すると、それは最初にヌルとして表示されますか? –

+0

アダプターなどのエラーのためにアプリがクラッシュしているので、実際には2つ以上のチームを追加することは実際できません。私はあなたに戻ることができる前に、これらの他の問題をデバッグしようとします。ご協力いただきありがとうございます。 – kmindspark

答えて

0

あなたのクラスに問題があると思われますTeam。その定義を投稿してください。 nameの値を返すメソッドtoString()のオーバーライドが含まれていますか? ArrayAdapterのドキュメントでは、「オブジェクトのtoString()メソッドをオーバーライドして、リスト内の項目に表示するテキストを決定します。」

+0

チームクラスのtoStringメソッドをオーバーライドします。チーム名を返します。ありがとう – kmindspark

関連する問題