회 전자를 사용하여 항목을 선택하고 새로 고칩니다.회 전자 항목을 사용할 때 어댑터가 새로 고쳐지지 않습니다.
예 : 전체를 선택하면 모든 항목이 표시됩니다. "Sell In"을 선택하면 항목에 대한 판매 만 표시됩니다. 따라서 스피너 선택에 따라 항목이 필터링되어 표시되어야합니다.
필터링을 시도했지만 제외하지 않았습니다. 어댑터가 항목을 새로 고치지 않습니다.
다음은 코드입니다.
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 답변을 편집했습니다. 당신이 지금 그것을 얻을 수 있기를 바랍니다. 드롭 다운에서 값을 선택하면 어댑터를 필터링해야합니다. – Shiv