Использование ListView в качестве вид снизу и в вашей ListView заголовка положить RecycerView
list_sample.xml (Это ваш основной макет для деятельности набора контента)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/content_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<ListView
android:id="@+id/list_sample"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
header_recycler.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:orientation="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/list_header"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
item_header.xml (элементы для списка заголовков, т.е. рециркуляции erview один)
<?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="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/item_header_regular"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#FF2255" />
</LinearLayout>
list_item.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:orientation="vertical">
<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="50dp" />
</LinearLayout>
HeaderRecyclerView.java (RecyclerView адаптер)
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
public class HeaderRecyclerView extends RecyclerView.Adapter<HeaderRecyclerView.HeaderHolder> {
private final Context context;
private List<String> items;
public HeaderRecyclerView(List<String> items, Context context) {
this.items = items;
this.context = context;
}
@Override
public HeaderHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_header, parent, false);
return new HeaderHolder(v);
}
@Override
public void onBindViewHolder(HeaderHolder holder, int position) {
String item = items.get(position);
holder.textView.setText(item);
}
@Override
public int getItemCount() {
if (items == null) {
return 0;
}
return items.size();
}
class HeaderHolder extends RecyclerView.ViewHolder {
TextView textView;
HeaderHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.item_header_regular);
}
}
}
BottomListAdapter.java (ListView адаптер)
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class BottomListAdapter extends BaseAdapter {
private List<String> items = new ArrayList<>();
private Context context;
public BottomListAdapter(List<String> items, Context context) {
this.items = items;
this.context = context;
}
@Override
public int getCount() {
return items.size();
}
@Override
public String getItem(int i) {
return items.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View convertView, ViewGroup viewGroup) {
TextView txtView;
if (convertView == null) {
convertView = LayoutInflater.from(context)
.inflate(R.layout.list_item, viewGroup, false);
txtView = (TextView) convertView.findViewById(R.id.text);
convertView.setTag(new ViewHolder(txtView));
} else {
ViewHolder viewHolder = (ViewHolder) convertView.getTag();
txtView = viewHolder.txtView;
}
String string = getItem(i);
txtView.setText(string);
return convertView;
}
private static class ViewHolder {
public final TextView txtView;
public ViewHolder(TextView txtView) {
this.txtView = txtView;
}
}
}
В Ваш OnCreate использовать ниже для инициализации, как follwing
ListView listView = (ListView) findViewById(R.id.list_sample);
View view = getLayoutInflater().inflate(R.layout.header_recycler, null);
RecyclerView headerList = (RecyclerView) view.findViewById(R.id.list_header);
List<String> strings = new ArrayList<>();
for (int i = 0; i < 50; i++) {
strings.add(i + "");
}
headerList.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
headerList.setAdapter(new HeaderRecyclerView(strings, this));
listView.addHeaderView(view);
listView.setAdapter(new BottomListAdapter(strings, this));
ли Вы хотите использовать Recyclerview только для нижней точки зрения, а? Можете ли вы использовать ListView для нижнего? – raktale
Вы должны объединить эти 2 и использовать 'viewtype' см https://developer.android.com/reference/android/support/v7/widget/RecyclerView.Adapter.html#getItemViewType(int) – WenChao
Я не хочу Точная вещь, как изображения выше, мне просто нужно решение сделать два match_parent recyclerViews после друг друга –