2016-12-07 27 views
0

Im跟在this tutorial后,我仔细地按照指示操​​作,但遇到了一些问题。在我的ItemView控件的构造函数,cardview和照片是 “无法解析的符号”:在RecyclerView/CardView中解析2个符号并添加元素

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 =“photo”而不是android:id =“@ + id/photo”。不知道有什么不同,但我认为这有帮助。

+0

'@ + id/photo'将使您可以在布局中查找'R.id.photo'或引用。 'android:id'不是必需的属性,虽然 –

+0

另外,当你有'layout_toRightOf =“@ + id/photo”'时,它应该只是'layout_toRightOf =“@id/photo”'。没有加号 –