2017-02-06 70 views
0

因爲我想使用RecyclerView和firebase,我已經閱讀了很多關於recyclerview的firebase數據庫適配器,但我不確定在源代碼中是否有任何錯誤。它不會編譯。任何人都可以給我一些建議嗎?recyclerview和firebase無法編譯

Move.java

public class Movie { 
private String name; 

public Movie(String name) { 
} 

public Movie(String name, String tel) { 
    this.name = name; 
// this.tel = tel; 

} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
    } 

    } 

MoviesAdapter.java

public class MoviesAdapter extends RecyclerView.Adapter<MoviesAdapter.MyViewHolder> { 

private List<Movie> moviesList; 

public MoviesAdapter() { 

} 

public class MyViewHolder extends RecyclerView.ViewHolder { 
    public TextView title, year, genre; 

    public MyViewHolder(View view) { 
     super(view); 
     title = (TextView) view.findViewById(R.id.tv_name); 
    // genre = (TextView) view.findViewById(R.id.tv_phone); 

    } 
} 


public MoviesAdapter(List<Movie> moviesList) { 
    this.moviesList = moviesList; 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = LayoutInflater.from(parent.getContext()) 
      .inflate(R.layout.row, parent, false); 

    return new MyViewHolder(itemView); 
} 


@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
    Movie movie = moviesList.get(position); 
    holder.title.setText(movie.getName()); 
    // holder.genre.setText(movie.getTel()); 
} 

@Override 
    public int getItemCount() { 
     return moviesList.size(); 
    } 
} 

MainActivity.java

public class MainActivity extends AppCompatActivity { 


private RecyclerView recyclerView; 
private List<String> movieList = new ArrayList<>(); 
private MoviesAdapter mAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    recyclerView = (RecyclerView) findViewById(R.id.recycler); 
    mAdapter = new MoviesAdapter(); 
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
    recyclerView.setLayoutManager(mLayoutManager); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    recyclerView.setAdapter(mAdapter); 

    DatabaseReference reference_contacts = FirebaseDatabase.getInstance().getReference("contacts"); 
    reference_contacts.addValueEventListener(new ValueEventListener() { 

     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      movieList.clear(); 
      for (DataSnapshot ds : dataSnapshot.getChildren()){ 

       movieList.add(ds.child("name").getValue().toString()); 
       mAdapter.notifyDataSetChanged(); 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
    } 


} 
+4

在哪裏編譯錯誤?如果你缺少firebase和recyclerview依賴關係,請顯示你的gradle文件。 –

+0

post stacktrace – mayosk

+0

請添加錯誤代碼,我們可以給出相應的解決方案。根據你的模型類中的代碼片段,你沒有定義一個空的構造函數。所以,如果你得到像缺少一個沒有參數的構造函數的錯誤,那麼請先定義空的構造函數。祝你好運!! –

回答

0

他們都精細一起工作。它們之間沒有依賴關係。你的問題可能來自你的gradle文件。 你會得到什麼樣的錯誤?

請確保使用最新buildToolsVersion在gradle這個文件:

的Android { compileSdkVersion 25 buildToolsVersion 「25.0.2」

defaultConfig { 
    applicationId "your.package.name" 
    minSdkVersion XX 
    targetSdkVersion 25 
} 

,並添加以下的依賴:

compile 'com.android.support:recyclerview-v7:25.0.1' 
compile 'com.google.firebase:firebase-core:10.0.1' 

確保您的根gradle文件是最新的依賴關係:

dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.3' 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 

你這裏的一切:

https://firebase.google.com/docs/android/setup