2017-04-08 45 views
-1

1. package com.example.saulo.apptest;爲什麼Android Studio中的ArrayList只顯示最後一個位置,覆蓋其他位置?

import android.nfc.Tag; 
import android.util.Log; 
import java.util.ArrayList; 
import java.util.List; 
import static android.content.ContentValues.TAG; 

public class Movie { 
    private String disciplina; 
    private int rating ; 
    private String professor ; 

    List<String> disciplinas; 
    List<String> professores; 



    public Movie newInstance() { 
     disciplinas = new ArrayList<>(); 
     professores = new ArrayList<>(); 


     Movie movie = new Movie(); 

     disciplinas.add(0, "Comportamento organizacinal"); 
     disciplinas.add(1, "graducao"); 
     professores.add(0, "Ana Maria"); 
     professores.add(1, "Luciana"); 

     //Random random = new Random(); 
     // ArrayList<Movie> list = new ArrayList<>(); 
     for(String d : disciplinas){ 
     movie.setDisciplina(d); 
     } 
     for(String p : professores) { 
     movie.setProfessor(p); 

     } 
     // list.add(movie); 
     // movie.setDisciplina (disciplinas [random.nextInt (disciplinas.length)]); 
     // movie.setRating (random.nextInt (5) + 1); 
     // movie.setYear (1980 + random.nextInt(37)); 

     return movie; 
    } 

    public String getDisciplina() { 
     return disciplina; 
    } 

    public void setDisciplina(String disciplina) { 
     this.disciplina = disciplina; 
    } 

    public String getProfessor() { 
     return professor; 
    } 

    public void setProfessor(String professor) { 
     this.professor = professor; 
    } } 

2.包com.example.saulo.apptest;

import android.content.Context; import android.view.LayoutInflater; 
import android.view.View; import android.view.ViewGroup; import 
android.widget.ArrayAdapter; import android.widget.TextView; 

import java.util.List; 

public class MovieAdapter extends ArrayAdapter<Movie> { 

    private int resource ; 

    public MovieAdapter (Context context , int resource , List<Movie> objects) { 
     super(context, resource, objects); 
     this.resource = resource ; 
    } 

    @Override 
    public View getView (int position, View convertView, ViewGroup parent) { 
     View row = convertView ; 

     if (row == null) { 
      LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      row = inflater.inflate(this.resource, parent, false); 
     } 

     Movie movie = getItem (position); 

     TextView name = (TextView) row.findViewById(R.id.disciplina); 
     name.setText(movie.getDisciplina()); 

     TextView professor = (TextView) row.findViewById(R.id.professor); 
     professor.setText(" Professor : " + movie.getProfessor()); 

     // TextView rating = (TextView) row.findViewById(R.id.rating); 
     // rating.setText(String.valueOf(movie.getRating())); 

     return row; 
    } } 

3. package com.example.saulo.apptest;

import android.nfc.Tag; import 
android.support.v7.app.AppCompatActivity; import android.os.Bundle; 
import android.util.Log; import android.view.View; import 
android.widget.AdapterView; import android.widget.ArrayAdapter; 
import android.widget.GridView; import android.widget.Toast; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_advanced_grid_view); 


     initAdvancedGridView(); 
     initGridView(); 

    } 

    private ArrayList<String> createItemsList() { 
     ArrayList<String> list = new ArrayList<String>(); 

     for (int i = 0; i <= 5; i++) { 
      list.add("Item" + i); 
     } 

     return list ; 
    } 



    private ArrayList <Movie> createMoviesList() { 
     ArrayList <Movie> list = new ArrayList <Movie>(); 
     for (int i = 0; i <= 1; i++) { 
      Movie movie = new Movie(); 

      list.add(movie.newInstance()); 
     } 

     return list ; 
    } 

    private void initGridView() { 
     GridView gridView = (GridView) findViewById(R.id.grid_view); 
     if (gridView == null) { 
      return; 
     } 


     ArrayList<String > list = createItemsList(); 

     ArrayAdapter<String > adapter = new ArrayAdapter<String>(this , android.R.layout.simple_list_item_1, 
list); 
     gridView.setAdapter(adapter); 
    } 

    private void initAdvancedGridView(){ 
     GridView gridView = (GridView) findViewById(R.id.advanced_grid_view); 

     if (gridView == null) { 
      return ; 
     } 

     ArrayList<Movie> list = createMoviesList(); 

     MovieAdapter adapter = new MovieAdapter (this, R.layout.grid_view_item, list); 
     gridView.setAdapter(adapter); 
     gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick (AdapterView<?> parent, View view, int position, long id) { 

       Movie movie = (Movie) parent.getAdapter().getItem(position); 

       Toast toast = Toast.makeText(MainActivity.this, movie.getDisciplina() , Toast.LENGTH_LONG); 

       toast.show(); 
      } 
     }); 
    } 

} 
+0

歡迎來到堆棧溢出!我會想象這95%的代碼與你的問題無關。請創建一個[**最小**,完整且可驗證的示例](http://stackoverflow.com/help/mcve),以說明您的問題。 –

回答

0

雖然你想達到什麼樣的代碼做什麼解釋本來不錯,我認爲它有與這部分在Movie類的事:

for(String d : disciplinas){ 
    movie.setDisciplina(d); 
} 

for(String p : professores) { 
    movie.setProfessor(p); 
} 

我不知道這些方法做什麼,但你應該檢查這些方法是否這樣做:

public void setDisciplina(String disciplina) { 
    disciplinaList.add(disciplina); 
} 
+0

我將數據設置爲de setters以便在gridview中顯示它,但是當我運行tha應用程序時它只顯示最後一個位置 –

相關問題