我正在尝试从 html 表行中创建 recyclerview。
我已经制作了适配器和 recycler_item 布局。
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
private String[] mDataset;
// класс view holder-а с помощью которого мы получаем ссылку на каждый элемент
// отдельного пункта списка
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
// наш пункт состоит только из одного TextView
public LinearLayout Item;
public TextView mTextView;
public TextView mTextView1;
public TextView mTextView2;
public LinearLayout mLabel;
private Context context;
public ViewHolder(View v) {
super(v);
mTextView = (TextView) v.findViewById(R.id.tv_recycler_item);
mTextView1 = (TextView) v.findViewById(R.id.tv_recycler_item2);
mTextView2 = (TextView) v.findViewById(R.id.tv_recycler_item3);
// mLabel = (LinearLayout) v.findViewById(R.id.extended);
Item = (LinearLayout) v.findViewById(R.id.Item);
context = v.getContext();
v.setClickable(true);
v.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ExtendedActivity.class);
context.startActivity(intent);
}
}
// Конструктор
public RecyclerAdapter(String[] dataset) {
mDataset = dataset;
}
// Создает новые views (вызывается layout manager-ом)
@Override
public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycler_maket, parent, false);
// тут можно программно менять атрибуты лэйаута (size, margins, paddings и др.)
ViewHolder vh = new ViewHolder(v);
return vh;
}
// Заменяет контент отдельного view (вызывается layout manager-ом)
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTextView.setText(mDataset[position]);
}
// Возвращает размер данных (вызывается layout manager-ом)
@Override
public int getItemCount() {
return mDataset.length;
}
在主要活动中有一个循环,它解析 html doc,并将 elementid 文本写入数组。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
// return inflater.inflate(R.layout.fragment_fragment_task, container, false);
View rootView = inflater.inflate(R.layout.fragment_fragment_task, container, false);
String[] myDataset = getDataSet();
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.my_recycler_view);
// если мы уверены, что изменения в контенте не изменят размер layout-а RecyclerView
// передаем параметр true - это увеличивает производительность
mRecyclerView.addItemDecoration(new VerticalItemDecoration(VERTICAL_ITEM_SPACE));
//or
mRecyclerView.addItemDecoration(
new DividerItemDecoration(getActivity()));
//or
mRecyclerView.addItemDecoration(
new DividerItemDecoration(getActivity(), R.drawable.line_divider));
// используем linear layout manager
mLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManager);
// создаем адаптер
mAdapter = new RecyclerAdapter(myDataset);
mRecyclerView.setAdapter(mAdapter);
return rootView;
}
private String[] getDataSet() {
String[] mDataSet = new String[];
for (int i = 0; i < 100; i++) {
mDataSet[i] = "parsedhtmldata" + i;
}
return mDataSet;
}
所以这个数组将是 recyclerview 中 textview 的文本。
这可以在一个元素中执行 recyclerview。
那么如何做同样的事情,但在一个 recyclerview 项目中添加额外的文本视图?