获取价值
嗯,我有一个RecyclerView,我从选择多个值,并希望选定行的值追加到数组,但我不知道我做错了返回空:我获取价值
import com.bignerdranch.android.multiselector.MultiSelector;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Created by MACBOOK on 07/03/16.
*/
public class ChannelsAdapter extends RecyclerView.Adapter<ChannelsAdapter.ChannelsViewHolder> implements Filterable {
private LayoutInflater inflater;
private Context context;
List<ChannelsInformation> data = Collections.emptyList();
private final List<ChannelsInformation> filteredChannelsList;
private final MultiSelector mMultiSelector = new MultiSelector();
ArrayList <String> selected;
public ChannelsAdapter(Context context, List<ChannelsInformation> data){
inflater = LayoutInflater.from(context);
this.context = context;
this.data = data;
filteredChannelsList = data;
}
public void remove(int position){
data.remove(position);
notifyItemRemoved(position);
}
@Override
public ChannelsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View rowView = inflater.inflate(R.layout.custom_channel_row, parent, false);
ChannelsViewHolder holder = new ChannelsViewHolder(rowView);
return holder;
}
@Override
public void onBindViewHolder(final ChannelsViewHolder holder, final int position) {
ChannelsInformation current = data.get(position);
holder.CHANNELNAME.setText(current.channelName);
holder.ID.setText(current.id);
holder.mSolvedCheckBox.setChecked(current.isSelected);
}
@Override
public int getItemCount() {
return data.size();
}
@Override
public Filter getFilter() {
return new UserFilter(this ,filteredChannelsList);
}
private static class UserFilter extends Filter {
private final ChannelsAdapter adapter;
private final List<ChannelsInformation> originalList;
private final List<ChannelsInformation> filteredList;
private UserFilter(ChannelsAdapter adapter, List<ChannelsInformation> originalList) {
super();
this.adapter = adapter;
this.originalList = new ArrayList<>(originalList);
this.filteredList = new ArrayList<>();
}
@Override
protected FilterResults performFiltering(CharSequence constraint) {
filteredList.clear();
final FilterResults results = new FilterResults();
if (constraint == null || constraint.length() == 0) {
filteredList.addAll(originalList);
} else {
final String filterPattern = constraint.toString().toLowerCase().trim();
for (final ChannelsInformation channel : originalList) {
}
}
results.values = filteredList;
results.count = filteredList.size();
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
adapter.filteredChannelsList.clear();
if ((ArrayList<ChannelsInformation>) results.values != null) {
adapter.filteredChannelsList.addAll((ArrayList<ChannelsInformation>) results.values);
}
adapter.notifyDataSetChanged();
} }
class ChannelsViewHolder extends SwappingHolder implements View.OnClickListener {
TextView CHANNELNAME,ID;
CheckBox mSolvedCheckBox;
public ChannelsViewHolder(View itemView) {
super(itemView , mMultiSelector);
mMultiSelector.setSelectable(true);
mSolvedCheckBox = (CheckBox) itemView.findViewById(R.id.selectedChannelCheckBox);
itemView.setOnClickListener(this);
CHANNELNAME = (TextView) itemView.findViewById(R.id.ChannelNameTxtView);
ID = (TextView) itemView.findViewById(R.id.ChannelRowIdTextView);
}
@Override
public void onClick(View v) {
if (!mMultiSelector.tapSelection(this)) {
Toast.makeText(context,CHANNELNAME.getText(),Toast.LENGTH_LONG).show();
mSolvedCheckBox.toggle();
selected.add(ID.toString());
Log.d(""+selected , " : value of selected ");
}
}
}}
另一个类:
public class ChannelsInformation {
String id,channelName;
boolean isSelected;
}
上myFragmentCLass:
Fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String data = "";
List<ChannelsInformation> stList = ((ChannelsAdapter) channelsAdapter).data;
for (int i = 0; i < stList.size(); i++) {
ChannelsInformation singleStudent = stList.get(i);
if (singleStudent.isSelected) {
data = data + "\n" + singleStudent.channelName;
}
}
Toast.makeText(getActivity(),
"Selected Students: \n" + data, Toast.LENGTH_LONG)
.show();
}
});
那么我想这个从过去的4个小时,你可以看到,我甚至尝试multiselector
它的库中创建一个selectMode
作为同我们所拥有的ListView的,现在我在我看来推杆的复选框,并试图让theValue的复选框检查框,如果它的检查,然后显示数据,但得到null
作为回报,如果有人的错误在这里,然后请指出它会对我很有帮助和我,赞赏我,谢谢
你可以尝试创建List<YourItem> selectedItems
并添加甚至选定的项目。不要忘记从这个列表中删除未选定的项目。在这个适配器创建的getter
public List<YoutItem> getSelectedItens(){
return selectedItems;
}
it's地图例如
好吧,我不看你的
ArrayList<String> selected;
初始化这样做
public ChannelsAdapter(Context context, List<ChannelsInformation> data) {
inflater = LayoutInflater.from(context);
this.context = context;
this.data = data;
filteredChannelsList = data;
// like this
selected = new ArrayList<>();
}
嘿@mithun非常感谢回答的人,我非常感谢这一点,但是在代码中我没有将它们添加到任何数组中,只是遍历所有数据并检查视图是否被选择为不是for(int i = 0 ; i
点是变得空回报:( –
@llya感谢了很多回应的人,基本上是一个iOS开发人员,并没有太多的东西进入到机器人中,所以你仍然想清楚所有这些方面,所以你可以请Ase解释我有点深?请因为我没有从你的问题得到确切的点 –
检查我的编辑,请 –
嗨@llya感谢您的链接,所以看到你的例子后,我需要的是'onBindViewHolder',我说得对吗? –