【发布时间】:2017-11-28 08:45:42
【问题描述】:
我正在使用微调器来选择和刷新项目。
例如:如果我选择全部,它应该显示所有项目。如果我选择“出售”,它应该只显示出售物品。因此,根据微调器选择,项目应过滤掉并需要显示。
我试图过滤掉,但它没有过滤掉。适配器不刷新项目。
这是代码。
MainActivity:
public class Activities extends BaseActivity {
private RecyclerView recyclerView;
private Spinner spinner;
String[] countriesList = {"All", "Sell In", "Registrasi", "Re-Registrasi"};
ActivitiesListAdapter adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
contentView = inflater.inflate(R.layout.activity_activities_list, null);
insertPoint.addView(contentView);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
spinner = (Spinner) findViewById(R.id.spinner);
adapter = new ActivitiesListAdapter(getData(), this);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this, OrientationHelper.VERTICAL, false);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setNestedScrollingEnabled(false);
recyclerView.setAdapter(adapter);
CustomSpinnerAdapter customAdapter=new CustomSpinnerAdapter(this,countriesList);
spinner.setAdapter(customAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
String items = adapterView.getItemAtPosition(i).toString();
// adapter.getFilter().filter(items);
final List<RetailerActivities> filteredModelList2 = adapter.filter2(getData(), items);
//adapter.setFilter(filteredModelList2);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
//the first item to be compared in Spinner.
public static List<RetailerActivities> getData() {
List<RetailerActivities> list = new ArrayList<>();
list.add(new RetailerActivities("Sell In", "Selli Cell", "13/06/2017 09:10", R.drawable.ic_tag));
list.add(new RetailerActivities("Registrasi", "Farras Cell", "13/06/2017 09:10", R.drawable.ic_registrasi));
list.add(new RetailerActivities("Re-Registrasi", "Farras Cell", "13/06/2017 09:10", R.drawable.ic_registrasi));
list.add(new RetailerActivities("POSM & Visibility", "Farras Cell", "13/06/2017 09:10", R.drawable.ic_poms));
list.add(new RetailerActivities("Sell In", "Selli Cell", "13/06/2017 09:10", R.drawable.ic_tag));
return list;
}
适配器类
public class ActivitiesListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<RetailerActivities> mList;
private Context context;
private List<RetailerActivities> mFilteredList;
public ActivitiesListAdapter(List<RetailerActivities> list, Context context) {
this.mFilteredList = this.mList = list;
this.context = context;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activities_row, parent, false);
return new RetailerActivitiesView(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
RetailerActivities object = mList.get(position);
//RetailerActivities retailerFilter = mFilteredList.get(position);
((RetailerActivitiesView) holder).title.setText(object.getTitle());
((RetailerActivitiesView) holder).name.setText(object.getName());
((RetailerActivitiesView) holder).dateTime.setText(object.getDateTime());
((RetailerActivitiesView) holder).profileIcon.setImageResource(object.getDrawablesIcon());
}
@Override
public int getItemCount() {
if (mList == null)
return 0;
return mList.size();
}
@Override
public int getItemViewType(int position) {
if (mList != null) {
RetailerActivities object = mList.get(position);
if (object != null) {
//return object.getType();
}
}
return 0;
}
public static class RetailerActivitiesView extends RecyclerView.ViewHolder {
private ImageView profileIcon;
private TextView title;
private TextView name;
private TextView dateTime;
public RetailerActivitiesView(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.recycle_txt_acc_num);
name = (TextView) itemView.findViewById(R.id.recycle_txt_acc_name);
dateTime = (TextView) itemView.findViewById(R.id.timestamp);
profileIcon = (ImageView) itemView.findViewById(R.id.recycle_profile);
}
}
public List<RetailerActivities> filter2(List<RetailerActivities> models, String filterType) {
final ArrayList<RetailerActivities> filteredModelList = new ArrayList<>();
for (RetailerActivities model:models) {
final String cardTypeTest = model.getTitle(); //title is //where i need to compare from the spinner string..
if (cardTypeTest.equalsIgnoreCase(filterType)) {
filteredModelList.add(model);
}
}
return filteredModelList;
}
}
【问题讨论】:
-
如果选择了微调项,您希望在哪里显示结果
-
是的@vikaskumar 我已经编辑了答案。希望你现在能得到它。当我从下拉列表中选择值时,我需要过滤适配器。
标签: android android-recyclerview android-spinner android-adapter