gpt4 book ai didi

android - 如何使回收站查看多个数据集?

转载 作者:行者123 更新时间:2023-11-29 17:22:17 24 4
gpt4 key购买 nike

我正在尝试从 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;
}


在主要 Activity 中有一个循环,它解析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 项目中使用额外的 TextView ?

最佳答案

使用类似的类

static class DataSet {
String field1;
String field2;
String field3;
}

然后像下面这样对 Adapter 进行更改

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

private DataSet[] 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(DataSet[] 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].field1);
holder.mTextView1.setText(mDataset[position].field2);
holder.mTextView2.setText(mDataset[position].field3);
}

// Возвращает размер данных (вызывается layout manager-ом)
@Override
public int getItemCount() {
return mDataset.length;
}
}

然后在 fragment 中改变方法

private DataSet[] getDataSet() {
DataSet[] mDataSet = new DataSet[100];
for (int i = 0; i < 100; i++) {
DataSet dataSet = new DataSet();
dataSet.field1 = "parsedhtmldata 1" + i;
dataSet.field2 = "parsedhtmldata 2" + i;
dataSet.field3 = "parsedhtmldata 3" + i;
mDataSet[i] = dataSet;
}
return mDataSet;
}

关于android - 如何使回收站查看多个数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36131474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com