我尝试做的是获取所选项目,然后使用工具栏将其传递给下一个活动的意图值。我应该如何让我的工具栏菜单知道它想要获得什么数据。请帮忙
适配器onBindViewHolder()
toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem arg0) {
switch (arg0.getItemId()) {
case R.id.save:
Intent intent = new Intent(getApplicationContext(), NextActivity.class);
startActivity(intent);
default:
return false;
}
}
});
我的工具栏
declare @SearchTerm nvarchar(1) = '@'
select substring(Email, charindex(@SearchTerm, Email) + 1, len(Email)) as [Email Domain],
count(Email) as Total
from tblResident
group by substring(Email, charindex(@SearchTerm, Email) + 1, len(Email))
答案 0 :(得分:2)
您可以在适配器类中维护数据结构,以便继续添加所选项目。
我猜你的工具栏在你的活动或片段中,希望有一个适配器的引用,它可以访问这个数据结构,然后在意图中传递它。
我使用SparseArray。所以在您的适配器中,执行类似以下操作
SparseArray itemsArray = new SparseArray<>();
你的onBindViewHolder方法中的
if(item.isSelect()) {
viewHolder.view.setBackgroundColor(ContextCompat.getColor(mContext, R.color.colorPrimary));
if (itemsArray.get(position) != item) {
itemsArray.put(position, item);
}} else {
viewHolder.view.setBackgroundResource(R.drawable.item_selector);
if (itemsArray.get(position) == item) {
itemsArray.put(position, item);
}}
现在,从您的活动或片段使用适配器引用来访问itemsArray变量。在其上运行for循环并将项添加到arrayList中。
可以在intent中将arrayList设置为extra,并且可以从getSerializableExtra()方法在目标活动中检索。
另一方面,您可以使用position而不是viewHolder.position
答案 1 :(得分:0)
在适配器中创建方法:
public ArrayList<Item> getSelectedItems() { ArrayList<Item> selectedItems = new ArrayList<>(); for( Item item : items ) { if( item.isSelect() ) selectedItems.add(item); } return selectedItems; }
确保您的模型类Item实现可序列化或可分割的
在工具栏菜单中,单击侦听器代码:
> toolbar.setOnMenuItemClickListener(new > > Toolbar.OnMenuItemClickListener() { > @Override > public boolean onMenuItemClick(MenuItem arg0) { > switch (arg0.getItemId()) { > case R.id.save: > > > Intent intent = new Intent(getApplicationContext(), NextActivity.class); > intent.putSerializable("selectedItems", adapter.getSelectedItems()); // In case Item class is implementing > serializable > intent.putParcelableArrayListExtra("selectedItems",adapter.getSelectedItems()); // In > case you are using parcelable in your Item class > startActivity(intent); > > default: > return false; > } > } > });