2016-06-10 92 views
1

我正在將RecyclerView與自定義適配器一起使用,但未顯示數據。 適配器從數據庫下載一些縮略圖圖像,並從Api密鑰中獲取標題和信息。RecyclerView未顯示

代碼的適配器類別的:

public class mostViewedAdapter extends RecyclerView.Adapter<mostViewedAdapter.ViewHolder> { 

private List<String> fTitle; 
private List<String> fInfos; 
private List<String> thumbs; 

public mostViewedAdapter(List<String> titoli, List<String> infos, List<String>thumbsUrl){  
    fTitle = titoli; 
    fInfos = infos; 
    thumbs = thumbsUrl;  
} 

public static class ViewHolder extends RecyclerView.ViewHolder { 
    public TextView titleTextView; 
    public TextView infoTextView; 
    public ImageView thumbImageView; 

    public ViewHolder(View itemView) { 
     super(itemView); 

     titleTextView = (TextView) itemView.findViewById(R.id.title); 
     infoTextView = (TextView) itemView.findViewById(R.id.infos); 
     thumbImageView = (ImageView) itemView.findViewById(R.id.thumb);  
    } 
    } 

@Override 
public mostViewedAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    Context context = parent.getContext(); 
    LayoutInflater inflater = LayoutInflater.from(context); 

    View mvView = inflater.inflate(R.layout.most_viewed, parent, false);  
    ViewHolder viewHolder = new ViewHolder(mvView); 
    return viewHolder; 
} 

@Override 
public void onBindViewHolder(mostViewedAdapter.ViewHolder holder, int position) { 

    String titolo = fTitle.get(position); 
    String info = fInfos.get(position); 
    String thumb = thumbs.get(position); 

    UrlGenerator url = new UrlGenerator(thumb); 
    Picasso.with(holder.thumbImageView.getContext()).load(url.generateImgUrl()) 
      .resize(50,70).centerCrop().into(holder.thumbImageView); 
    holder.infoTextView.setText(info); 
    holder.titleTextView.setText(titolo); 

    TextView tvTitolo = holder.titleTextView; 
    TextView tvInfo = holder.infoTextView; 
    ImageView ivImage = holder.thumbImageView;  
    } 

@Override 
public int getItemCount() { 
    return 0; 
} 
} 

回收站視圖:

public void initUI() { 

    RecyclerView recList = (RecyclerView) findViewById(R.id.rvCinema); 
    recList.hasFixedSize(); 

    mostViewedAdapter adapter = new mostViewedAdapter(titoli, info, thumbsUrl); 
    recList.setAdapter(adapter); 
    RecyclerView.LayoutManager lm = new LinearLayoutManager(this); 
    recList.setLayoutManager(lm); 
} 
+0

適配器聲明和setAdapter,把這兩行放在set layoutmanager下面。 – Vickyexpert

+0

同樣的問題,沒有顯示。無論如何,謝謝:) –

+0

你可以發佈XML以及嗎? :) – Patrick

回答

1

嘗試這樣的:

MainActivity

public class MainActivity extends AppCompatActivity { 
RecyclerView mRecyclerView; 
mostViewedAdapter mViewAdapter; 
//.... other elements 

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

    mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView_ID); 
    mRecyclerView.setHasFixedSize(true);   
    mRecyclerView.setItemAnimator(new DefaultItemAnimator()); 
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext())); 
    mViewAdapter= new mostViewedAdapter (listName, listInfo, listThumbs); 
    mRecyclerView.setAdapter(mViewAdapter); 
} 
} 

適配器類別

而不是返回0作爲計數返回的任一項的陣列的大小三個名單。

@Override 
public int getItemCount() { 
    return fTitle.size(); 
    //return fInfos.size(); 
    //return thumbs.size(); 
} 

希望我幫忙,如果仍然面臨任何問題,請發佈logcat。

+0

謝謝,現在它工作:) –

+0

@ G.Ferruzzi高興地幫助:) –

0

請返回fTitle.size();
@Override public int getItemCount() { return fTitle.size(); }

+0

好吧,現在它給了我這個致命錯誤java.lang.IllegalStateException:RecyclerView沒有LayoutManager –

+1

然後,你必須在設置適配器之前添加布局管理器回收站視圖。 –

+0

但我所建議的是不顯示任何項目的主要原因。同意? –