我为这个问题挣扎了一段时间。我有个活动(
SerieActivity
)其中,我允许用户选择各种项目并给它们赋值。项目存储在
ArrayList<Variable>
哪里
Variable
是我定义的一个类。项目显示在
RecyclerView
.这个很好用。单击该活动中的按钮后,用户将被发送到另一个活动(
Result
)显示与
ArrayList
在里面
连续性
,以及用户输入的相应值。
在我的
后果
活动我已创建
连续性
类,然后
阵列列表
存储原始值的步骤
阵列列表
从…起
连续性
.然而,我的
后果
类未填充数据。可能会出什么问题?
这是我的代码:
变量
班
public class Variable {
boolean known;
String unit, name;
double value;
}
RVAdapterSerie
-中使用的RecyclerView适配器
连续性
班
public class RVAdapterSerie extends RecyclerView.Adapter<RVAdapterSerie.ViewHolder> {
private Context context;
private ArrayList<Variable> variableList;
public RVAdapterSerie(Context context, ArrayList<Variable> variableList) {
this.context = context;
this.variableList = variableList;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.recycler_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(RVAdapterSerie.ViewHolder holder, int position) {
Variable v = variableList.get(position);
holder.setItems(v);
}
@Override
public int getItemCount() {
return variableList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
private CheckBox checkBox;
private EditText editText;
private TextView textView;
public ViewHolder(View itemView) {
super(itemView);
checkBox = itemView.findViewById(R.id.value_cb);
editText = itemView.findViewById(R.id.value_et);
textView = itemView.findViewById(R.id.value_tv);
}
public void setItems (Variable variable) {
checkBox.setText(variable.getName());
editText.setText(String.format("%.3f", variable.getValue()));
textView.setText(variable.getUnit());
}
}
}
连续性
班
public class SerieActivity extends AppCompatActivity {
public ArrayList<Variable> mList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_serie);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
RecyclerView recyclerView = findViewById(R.id.serie_rv);
RVAdapterSerie rvAdapterSerie = new RVAdapterSerie(this, mList);
recyclerView.setAdapter(rvAdapterSerie);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
populateList();
rvAdapterSerie.notifyDataSetChanged();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.serie_fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(SerieActivity.this, Result.class);
intent.putExtra("tag", "serie");
startActivity(intent);
}
});
}
public void populateList() {
mList.add(new Variable(false, "dummyunit", "dummyname", 0));
mList.add(new Variable(false, "diofishafuio", "ghfuef", 0));
mList.add(new Variable(false, "diofishdfesffafuio", "ghfuef", 0));
//add dummy items
}
}
RVResultAdapter
-RecyclerView-in适配器
后果
班
public class RVResultAdapter extends RecyclerView.Adapter<RVResultAdapter.ViewHolder> {
private Context context;
private ArrayList<Variable> variableList;
public RVResultAdapter(Context context, ArrayList<Variable> variableList) {
this.context = context;
this.variableList = variableList;
}
@Override
public RVResultAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.result_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(RVResultAdapter.ViewHolder holder, int position) {
Variable v = variableList.get(position);
holder.setItems(v);
}
@Override
public int getItemCount() {
return variableList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView textView1;
TextView textView2;
TextView textView3;
public ViewHolder(View itemView) {
super(itemView);
textView1 = itemView.findViewById(R.id.result_name_tv);
textView2 = itemView.findViewById(R.id.result_value_tv);
textView3 = itemView.findViewById(R.id.result_unit_tv);
}
public void setItems (Variable variable) {
textView1.setText(variable.getName());
textView2.setText(String.format("%.3f", variable.getValue()));
textView3.setText(variable.getUnit());
}
}
}
后果
班
public class Result extends AppCompatActivity {
public ArrayList<Variable> rList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
Intent intent = getIntent();
String tag = intent.getExtras().getString("tag");
if (tag.equals("serie")) {
SerieActivity serieActivity = new SerieActivity();
rList = serieActivity.mList;
}
RecyclerView recyclerView = findViewById(R.id.result_rv);
RVResultAdapter rvResultAdapter = new RVResultAdapter(this, rList);
recyclerView.setAdapter(rvResultAdapter);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
rvResultAdapter.notifyDataSetChanged();
}
}
我的问题是在
后果
。当我上下滚动时,它会显示蓝色的“内容结束”内容,所以我猜是RecyclerView
是
那里,但没有任何数据。非常感谢您的帮助。我对Android和Java编程非常陌生,所以我想这一定是一件我看不到的蠢事。