嗯,我有一個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
作爲回報,如果有人的錯誤在這裏,然後請指出它會對我很有幫助和我,讚賞我,謝謝
@llya感謝了很多回應的人,基本上是一個iOS開發人員,並沒有太多的東西進入到機器人中,所以你仍然想清楚所有這些方面,所以你可以請Ase解釋我有點深?請因爲我沒有從你的問題得到確切的點 –
檢查我的編輯,請 –
嗨@llya感謝您的鏈接,所以看到你的例子後,我需要的是'onBindViewHolder',我說得對嗎? –