2016-12-07 4 views
0

Im this tutorialの後に続き、指示に従っていますが、いくつかの問題がありました。私ItemViewコンストラクタでは、cardviewと写真は、 "解決できないシンボル" です:2シンボルを分解してRecyclerView/CardViewで要素を追加する

ItemViewHolder(View itemView) { 
      super(itemView); 
      cv = (CardView)itemView.findViewById(R.id.cardview); 
      title = (TextView)itemView.findViewById(R.id.title); 
      cover = (ImageView)itemView.findViewById(R.id.photo); 
     } 

は、ここで全体のアダプタクラスです:

package com.example.aaronpries.myfinal; 
import android.content.Context; 
import android.support.v7.widget.CardView; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.List; 

public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ItemViewHolder>{ 

    private Context context; 
    private List<Item> books; 



    ItemAdapter(List<Item> books){ 
     this.books = books; 
    } 

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

    @Override 
    public ItemViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
     View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.activity_cal, viewGroup, false); 
     ItemViewHolder bvh = new ItemViewHolder(v); 
     return bvh; 
    } 

    @Override 
    public void onBindViewHolder(ItemViewHolder bookViewHolder, int i) { 

     bookViewHolder.title.setText(books.get(i).text); 
     bookViewHolder.cover.setImageResource(books.get(i).imgID); 
    } 

    @Override 
    public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
     super.onAttachedToRecyclerView(recyclerView); 
    } 

    public static class ItemViewHolder extends RecyclerView.ViewHolder { 
     CardView cv; 
     TextView title; 
     ImageView cover; 



     ItemViewHolder(View itemView) { 
      super(itemView); 
      cv = (CardView)itemView.findViewById(R.id.cardview); 
      title = (TextView)itemView.findViewById(R.id.title); 
      cover = (ImageView)itemView.findViewById(R.id.photo); 
     } 
    } 

} 

これは私のアイテムクラスです:

package com.example.aaronpries.myfinal; 

import java.io.Serializable; 

public class Item implements Serializable{ 

    public int id; 

    public String text; 

    public int imgID; 
} 

ここにはrecyclerview xmlがあります:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <android.support.v7.widget.RecyclerView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/recyclerview" 
     /> 
</LinearLayout> 

活動のxml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:padding="16dp" 
    > 

    <android.support.v7.widget.CardView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/cardview" 
     > 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="16dp" 
      > 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/photo" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
       android:layout_marginRight="16dp" 
       /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/title" 
       android:layout_toRightOf="@+id/photo" 
       android:layout_alignParentTop="true" 
       android:textSize="30sp" 
       /> 

     </RelativeLayout> 

    </android.support.v7.widget.CardView> 

</LinearLayout> 

そして最後にActivityクラス:

public class CalActivity extends AppCompatActivity { 

    String[] events = {"A","B","C","D","E","F","G"}; 

    Context context = this; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_cal); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     RecyclerView recycler = (RecyclerView)findViewById(R.id.recyclerview); 
     LinearLayoutManager layoutManager = new LinearLayoutManager(context); 
     recycler.setLayoutManager(layoutManager); 


     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 
} 

私はこのRecyclerViewの作業を取得する方法についていくつかの異なるチュートリアルに従うことをしようとしているが、それらのほとんどドン最後に完成したコードを表示しています。私はとても新しいので、いつかは苦労します。 RecyclerViewに画像とタイトルのテキストを追加したいので、それについての提案があればそれを感謝します。私はデータを入力するためにItem.add( "text"、imgID)を何度も何度も繰り返していますか?

答えて

0

私はシンボルの部分を考え出したかもしれないと思います。私はandroid:id = "@ + id/photo"の代わりにandroid:id = "photo"を使わなかったと思います。違いが何であるかわからないが、私はそれが助けたと思う。

+0

'@ + id/photo'はレイアウト内で' R.id.photo'や参照を見つけることを可能にします。 –

+0

でも、 'layout_toRightOf =" @ + id/photo "'があるときは、 'layout_toRightOf =" @ id/photo "'になるはずです。いいえプラス –

関連する問題