【发布时间】:2016-05-26 02:20:44
【问题描述】:
我正在尝试通过做一个测试项目来学习 Recycler View,但是在整天找不到这个错误之后,我相信我做不到。我在 2 个活动上使用回收站视图。
第一个活动以空数组列表开始,因此不会在回收站视图上创建卡片视图。
单击 + 浮动操作按钮打开第二个活动 (startActivityForResult)
在该活动中,我们从一个包含成分详细信息(图像、简要说明、标题)的卡片视图的数组列表和一个名为 dataToBeReturned 的空数组开始;
当点击卡片视图上的图像视图时,我会从卡片视图中获取所有数据,这些数据被放在 dataToBeReturned(图像标签、简短描述字符串、标题字符串)上
当我单击android虚拟后退按钮时发生了奇怪的事情(不知道它是如何调用的),没有任何反应,没有卡出现,就像数据没有更新或以某种方式丢失,但是没有,我从应该通过的成分中记录了一些细节,确认它们在那里。但!当我单击我在第二个活动 ta-da 中的浮动操作按钮时,卡片被创建,详细信息也从我之前拥有的那个功能中记录下来......
因此,在这两种情况下,数据都会被传递,但在其中一种情况下,卡片会被创建,据我所知,回收器视图会在该数组列表上侦听更改,并在发生这种情况时更新布局等,但是我想知道为什么单击后退按钮时没有发生?
编辑:另外,如果在尝试使用虚拟按钮添加成分后返回,如果我再次单击添加成分并完成与工厂的第二个活动,则创建两张卡!什么鬼?
返回按钮:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK) {
finishActivity();
return true;
}
return super.onKeyDown(keyCode, event);
}
浮动按钮:
mFloatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finishActivity();
}
});
完成活动:
public void finishActivity() {
Intent intent = new Intent();
ArrayList<Data> dataToReturn = (ArrayList<Data>) searchIngredientAdapter.getDataToReturn();
for(Data data1 : dataToReturn) {
ingredientsName.add(new String(data1.getName()));
ingredientsImage.add(new String(String.valueOf(data1.getImage())));
ingredientsQuantity.add(new String(String.valueOf(data1.getQuantidade())));
ingredientsUnit.add(new String(String.valueOf(data1.getUnidade())));
}
intent.putStringArrayListExtra(INGREDIENTS_NAME, ingredientsName);
intent.putStringArrayListExtra(INGREDIENTS_IMAGE, ingredientsImage);
intent.putStringArrayListExtra(INGREDIENTS_QUANTITY, ingredientsQuantity);
intent.putStringArrayListExtra(INGREDIENTS_UNIT, ingredientsUnit);
setResult(Activity.RESULT_OK,intent);
finish();
}
onCreateViewHolder(firstActivity):
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.custom_row_2, parent, false);
Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(v.getContext(), R.array.units_array, android.R.layout.simple_spinner_item);
spinner.setAdapter(adapter);
Holder vh = new Holder(v);
return vh;
}
对不起,如果我不能正确表达自己,英语不是我的母语
【问题讨论】:
-
在提问时,您必须遵循最小、完整和可验证的策略stackoverflow.com/help/mcve
标签: android android-intent android-recyclerview