1
나는 사용자 정의 데이터 내 목록보기를 채우려 그래서 BaseAdapter
확장이 클래스 생성 :안드로이드 : 사용자 정의 목록보기에서 검색
PersonAdapter pe;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pe=new PersonAdapter();
ListView personListView = (ListView)findViewById(R.id.listView1);
personListView.setAdapter(pe);
EditText inputSearch=(EditText) findViewById(R.id.inputSearch);
txtEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
}
: 내 목록보기 이런 식으로 I'populating 다음
public class PersonAdapter extends BaseAdapter{
List<Person> persons= getDataforListViewList();
@Override
public int getCount() {
// TODO Auto-generated method stub
return persons.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return persons.get(arg0);
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int arg0, View arg1, ViewGroup arg2) {
if(arg1==null)
{
LayoutInflater inflater = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
arg1 = inflater.inflate(R.layout.listitem, arg2,false);
}
TextView Name = (TextView)arg1.findViewById(R.id.txtName);
TextView PhoneNumber = (TextView)arg1.findViewById(R.id.txtPhone);
Person person = persons.get(arg0);
Name.setText(person.name);
PhoneNumber.setText(person.phoneNumber);
return arg1;
}
}
을
코드가 올바르게 작동합니다. 이제 목록보기에 검색 기능을 추가하고 싶습니다. 어떻게 할 수 있습니까?
덕분에 좋은 예를하지만,'getFilter()'ArrayAdapter''의 구성원입니다. 내 클래스가이 멤버가없는'BaseAdapter'를 확장하고 있습니다. –
이 포럼에서 getFilter()의 여러 구현을 살펴보면 arraylist를 직접 필터링하는 작업이 줄어 듭니다. 당신의 person 클래스의 한 항목을 검색 문자열과 비교하는 단순한 루프. – greenapps