我正在尝试为ListView执行过滤操作。我正在从服务器获取五个数据组,并在ListView中显示五个数据。所以我的列表中有5个不同的数据。我想根据单个数据进行过滤。如果我只有一个数据,那么我可以使用这个代码ProjectEventFragment.this.adapter.getFilter()。filter(cs);.我怀疑的是如何在CustomEventAdapter中自定义getFilter方法。
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View rootView = inflater.inflate(R.layout.project_event, container, false);
mlist=new ArrayList<Meeting>();
cts=CalEvent.getCalEventById(proj1.p_id);
lv=(ListView) rootView.findViewById(R.id.eventlist);
Button btn=(Button)rootView.findViewById(R.id.button11);
context = rootView.getContext();
meeting = new Meeting();
btn.setOnClickListener(new OnClickListener()
{
public void onClick(View vie)
{
NewEventactivity dialog = new NewEventactivity(proj1);
dialog.show(getFragmentManager(), "fragmentDialog");
}
});
EditText inputSearch = (EditText) rootView.findViewById(R.id.eventFilter);
inputSearch.addTextChangedListener(new TextWatcher()
{
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3)
{
// When user changed the Text
ProjectEventFragment.this.adapter.getFilter().filter(cs);
}
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3)
{
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable arg0)
{
// TODO Auto-generated method stub
}
});
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
//dialog = MeetingFragment.newInstance(position);
dialog = new MeetingFragment(proj1);
dialog.show(getFragmentManager(), "fragmentDialog");
//dialog.getDialog().setTitle("Update Event");
event = new CalEvent();
event = cts.get(position);
}
});
settingAdapter();
return rootView;
}
public static void settingAdapter()
{
adapter=new CustomEventAdapter(context,cts);
lv.setAdapter(adapter);
}
请帮帮我。提前谢谢。
答案 0 :(得分:0)
我建议你使用这个组件:
https://github.com/matessoftwaresolutions/AndroidFilterableList
它允许您使用动态过滤器,按对象等字段进行过滤。
它还有一个示例实现,一个用例向您展示它是多么容易。
我认为您不必更改代码,只需实现两个接口并填充方法。
如果您不想更改实施,您也可以将代码与样本中的代码进行比较,因为它正在运行。
我希望这会对你有所帮助!! ;)