如何筛选自定义适配器的列表视图

时间:2014-10-13 10:12:13

标签: android

我正在尝试为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);  
}   

请帮帮我。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我建议你使用这个组件:

https://github.com/matessoftwaresolutions/AndroidFilterableList

它允许您使用动态过滤器,按对象等字段进行过滤。

它还有一个示例实现,一个用例向您展示它是多么容易。

我认为您不必更改代码,只需实现两个接口并填充方法。

如果您不想更改实施,您也可以将代码与样本中的代码进行比较,因为它正在运行。

我希望这会对你有所帮助!! ;)

相关问题