2015-05-17 3 views
0

Я хочу создать ListView внутри RecyclerView, который должен отображать некоторые данные в виде списка. В настоящее время у меня есть базовый адаптер и RecyclerView без ListView внутри него, так может кто-нибудь сказать мне, как изменить мой код, чтобы включить listview внутри RecyclerView?Android access Listview внутри RecyclerView

адаптер:

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.AdapterViewHolder> { 

    public static class AdapterViewHolder extends RecyclerView.ViewHolder { 

     TextView title; 
     TextView summary; 

     AdapterViewHolder(View itemView) { 
      super(itemView); 
      title = (TextView) itemView.findViewById(R.id.recycler_list_title); 
      summary = (TextView) itemView.findViewById(R.id.recycler_list_summary); 
     } 
    } 

    List<Items> items; 

    public RVAdapter(List<Items> items){ 
     this.items = items; 
    } 

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

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

    @Override 
    public void onBindViewHolder(AdapterViewHolder adapterViewHolder, int i) { 
     adapterViewHolder.title.setText(item.get(i).title); 
     adapterViewHolder.summary.setText(item.get(i).summary); 
    } 

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

Предметы:

public class Items { 
    String title; 
    String summary; 

    public Items(String title, String summary) { 
     this.title = title; 
     this.summary = summary; 
    } 
} 

Планировка:

<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/recycler" 
      android:layout_height="match_parent" 
      android:layout_width="match_parent" 
      android:scrollbars="vertical" 
      android:layout_marginTop="0dp" /> 
</LinearLayout> 

list_recycler:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" 
    android:paddingRight="?android:attr/scrollbarSize"> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginStart="15dp" 
     android:layout_marginEnd="6dp" 
     android:layout_marginTop="6dp" 
     android:layout_marginBottom="6dp"> 

     <TextView 
      android:id="@+id/recycler_list_title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@color/textColor" 
      android:textSize="16sp" 
      android:layout_alignParentLeft="true"/> 

     <TextView 
      android:id="@+id/recycler_list_summary" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="@color/textColorSub" 
      android:textSize="14sp" 
      android:layout_alignParentRight="true" /> 

    </RelativeLayout> 

</LinearLayout> 

Как я создаю ListView:
приватный элемент списка; частный RecyclerView rv;

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 


     rv = (RecyclerView) ((Activity) MainActivity.context).findViewById(R.id.recycler); 
     rv.setHasFixedSize(true); 
     rv.setLayoutManager(new LinearLayoutManager(this)); 

     initializeData(); 
     initializeAdapter(); 

     } 

    private void initializeData(){ 
     item = new ArrayList<>(); 
     item.add(new Items("Title", "Summary")); 
    } 

    private void initializeAdapter() { 
     RVAdapter adapter = new RVAdapter(item); 
     rv.setAdapter(adapter); 
    } 
} 
+0

вы могли бы быть лучше, если вы изменить внешний ListView в recyclerview. – EpicPandaForce

+0

И как бы я это сделал? – Broadwell

+0

@EpicPandaForce Я обновил вопрос, не могли бы вы взглянуть на него? – Broadwell

ответ

0
ListView listview = (ListView) findViewById(R.id.listview); 
ListView parentListView=(ListView)listview.getParent(); 

вы можете получить родительский ListView таким путем

+0

Так будет ли R.id.listview быть внутренним списком? – Broadwell

+0

Да listview является дочерним и parentListView является родителем – SNB

+0

Я обновил свой вопрос, чтобы включить код, как я могу преобразовать этот код, чтобы включить другой список в уже существующий список? – Broadwell