2017-03-24 19 views
1

我想在recycler_item.xml信息帶來從多個陣列 陣列如何通過在RecyclerAdapter多個陣列Android Studio中

newstitl.add(I,TITL);

newsdat.add(i,dat);

newsbody.add(i,body);

定位在

<TextView 
android:id="@+id/tv_recycler_item" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
/> 

<TextView 
android:id="@+id/tv_recycler_item1" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
/> 

<TextView 
android:id="@+id/tv_recycler_item2" 
android:layout_width="wrap_content" 
android:layout_height="match_parent" 
/> 

在NewsFragment.java

mRecyclerView = (RecyclerView) viiew.findViewById(R.id.my_recycler_view); 
mRecyclerView.setHasFixedSize(true); 

mLayoutManager = new LinearLayoutManager(mContext); 
mRecyclerView.setLayoutManager(mLayoutManager); 

mAdapter = new RecyclerAdapter(newstitl); 
mRecyclerView.setAdapter(mAdapter); 

有RecyclerAdapter.java

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

    private ArrayList<String> mDataset; 

    public static class ViewHolder extends RecyclerView.ViewHolder { 
     public TextView mTextView; 

     public ViewHolder(View v) { 
      super(v); 
      mTextView = (TextView) v.findViewById(R.id.tv_recycler_item); 
     } 
    } 

    public RecyclerAdapter(ArrayList<String> dataset) { 
     mDataset = dataset; 
    } 

    @Override 
    public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.recycler_item, parent, false); 

     ViewHolder vh = new ViewHolder(v); 
     return vh; 
    } 

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

     holder.mTextView.setText(mDataset.get(position)); 

    } 

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

} 

雖然我能夠採取只有一個陣列 Here is a screenshot

+0

@OlehKykena 如何從數組創建此模型? – Friken

回答

1

簡單,你只需要進行一些調整,以您的適配器..你需要的是接受3 ArrayList的適配器..

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

    private ArrayList<String> mDataset; 
    private ArrayList<String> mDataset2; 
    private ArrayList<String> mDataset3; 

    public static class ViewHolder extends RecyclerView.ViewHolder { 
     public TextView mTextView, mTextView2, mTextView3 ; 

     public ViewHolder(View v) { 
      super(v); 
      mTextView = (TextView) v.findViewById(R.id.tv_recycler_item); 
      mTextView2 = (TextView) v.findViewById(R.id.tv_recycler_item1); 
      mTextView3 = (TextView) v.findViewById(R.id.tv_recycler_item2); 
     } 
    } 

    public RecyclerAdapter(ArrayList<String> dataset, ArrayList<String>dataset2, ArrayList<String>dataset3) { 
     mDataset = dataset; 
     mDataset2 = datset2; 
     mDataset3 = dataset3; 

    } 

    @Override 
    public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.recycler_item, parent, false); 

     ViewHolder vh = new ViewHolder(v); 
     return vh; 
    } 

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

     holder.mTextView.setText(mDataset.get(position)); 
     holder.mTextView1.setText(mDataset2.get(position)); 
     holder.mTextView.setText(mDataset3.get(position));  
    } 

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

} 

而在你NewsFragment這樣調用3 ArrayList的適配器構造 -

mRecyclerView = (RecyclerView) viiew.findViewById(R.id.my_recycler_view); 
mRecyclerView.setHasFixedSize(true); 

mLayoutManager = new LinearLayoutManager(mContext); 
mRecyclerView.setLayoutManager(mLayoutManager); 

mAdapter = new RecyclerAdapter(newstitl,newsdat, newsbody); 
mRecyclerView.setAdapter(mAdapter); 
0

您應該創建一個名爲的模型,例如News,其中包含日期,標題和正文。然後,您應該將List<News>傳遞到您的適配器,而不是List<String>,並根據需要操作您的數據。

+0

@Friken你的數組是硬編碼的嗎? – OlehKykena