Wie richtig in den anderen Antworten erklärt ist es kein Attribut der RecyclerView von xml zu füllen. Doch mit der Android Databinding Sie ganz einfach ein ähnliches Attribut erstellen:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:entries="@{@stringArray/fi}"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
</layout>
Hier die Bindung Adapter Definition:
import android.databinding.BindingAdapter;
public class RecyclerViewBindings {
@BindingAdapter("entries")
public static void entries(RecyclerView recyclerView, String[] array) {
recyclerView.setAdapter(new SimpleArrayAdapter(array));
}
static class SimpleArrayAdapter extends RecyclerView.Adapter<SimpleHolder> {
private final String[] mArray;
public SimpleArrayAdapter(String[] array) {
mArray = array;
}
@Override
public SimpleHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final LayoutInflater inflater = LayoutInflater.from(parent.getContext());
final View view = inflater.inflate(android.R.layout.simple_list_item_1, parent, false);
return new SimpleHolder(view);
}
@Override
public void onBindViewHolder(SimpleHolder holder, int position) {
holder.mTextView.setText(mArray[position]);
}
@Override
public int getItemCount() {
return mArray.length;
}
}
static class SimpleHolder extends RecyclerView.ViewHolder {
private final TextView mTextView;
public SimpleHolder(View itemView) {
super(itemView);
mTextView = (TextView) itemView.findViewById(android.R.id.text1);
}
}
}
Dann müssen Sie die DataBindingUtil
Methoden für das Layout aufzublasen.
aufblasen innerhalb einer Aktivität:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DataBindingUtil.setContentView(this, R.layout.content_main);
}
in einem Fragment aufpumpen:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ContentMainBinding bindings = DataBindingUtil.inflate(inflater, R.layout.content_main, container, false);
return bindings.getRoot();
}
gibt es keine Option, weil recyclerview keine Basisstandard haben itemxml .Sie adpter für diese –
keine Option Datei erstellen müssen? und wie 'ListView' das macht? Siehe die Quellen von 'ListView' dann, [hier] (http://androidxref.com/6.0.0_r1/xref/frameworks/base/core/java/android/widget/ListView.java#161) zum Beispiel – pskink
@pskink thnks für wertvollen Kommentar, also gibt es keinen anderen Weg, als Adapter zu erstellen? Wir können keine Artikelwerte aus XML zuweisen, oder? –