http://recipes4dev.tistory.com/79
여기 나와있는 소스대로 작성하고
public class ContentListViewAdapter extends BaseAdapter implements Filterable{
private ArrayList<ContentListViewItem> listViewItemList = new ArrayList<ContentListViewItem>();
private ArrayList<ContentListViewItem> filterdeItemList = listViewItemList;
Filter listFilter ;
public ContentListViewAdapter(){
}
@Override
public int getCount() {
return listViewItemList.size();
}
@Override
public Object getItem(int position) {
return listViewItemList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final int pos = position;
Context context = parent.getContext();
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.list_item, parent, false);
}
TextView content = (TextView)convertView.findViewById(R.id.txt_content);
TextView startyear = ~생략
Button changebtn = (Button)convertView.findViewById(R.id.btn_change);
ContentListViewItem listViewItem = listViewItemList.get(position);
content.setText(listViewItem.getContent());
startyear.setText(listViewItem.getStart_year());
startmonth.~생략
Button removebtn = (Button)convertView.findViewById(R.id.btn_remove);
removebtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
removeItem(pos);
}
});
return convertView;
}
public void addItem(String content, String startyear, String startmonth, String startdate,
String startampm, String starthour, String startminute, String finishyear,
String finishmonth, String finishdate, String finishampm, String finishhour,
String finishminute){
ContentListViewItem item = new ContentListViewItem();
item.setContent(content);
item.~생략
listViewItemList.add(item);
notifyDataSetChanged();
}
public void removeItem(int position){
ContentListViewItem item = new ContentListViewItem();
listViewItemList.remove(position);
notifyDataSetChanged();
}
@Override
public Filter getFilter() {
if(listFilter == null){
listFilter = new ListFilter();
}
return listFilter;
}
class ListFilter extends android.widget.Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
if(constraint == null || constraint.length() == 0){
results.values = listViewItemList;
results.count = listViewItemList.size();
} else {
ArrayList<ContentListViewItem> itmeList = new ArrayList<ContentListViewItem>();
for(ContentListViewItem item : listViewItemList) {
if(item.getContent().toUpperCase().contains(constraint.toString().toUpperCase()));
{
itmeList.add(item);
}
}
results.values = itmeList;
results.count = itmeList.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filterdeItemList = (ArrayList<ContentListViewItem>) results.values;
if(results.count > 0){
notifyDataSetChanged();
} else {
notifyDataSetChanged();
}
}
}
}
어뎁터소스입니다
public class SecondFragment extends Fragment {
private ListView listview ;
private CalendarView calendar;
private static ContentListViewAdapter adapter;
public SecondFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_second, container, false);
ContentListViewAdapter adapter;
adapter = new ContentListViewAdapter();
final ListView listview;
adapter = (adapter == null) ? new ContentListViewAdapter() : adapter;
final Button removebtn = (Button)view.findViewById(R.id.btn_remove);
listview = (ListView)view.findViewById(R.id.schedulerlist);
listview.setAdapter(adapter);
adapter.addItem("content", "2222", "06", "25", "pm","시작시간","시작분",
"종료년", "종료월","종료일", "am", "종료시간", "종료분");
adapter.addItem("hht1", "201", "05", "11", "pm","시작시간","시작분",
"종료년", "종료월","종료일", "am", "종료시간", "종료분");
adapter.addItem("asdf", "22", "05", "11", "pm","시작시간","시작분",
"종료년", "종료월","종료일", "am", "종료시간", "종료분");
Toast.makeText(getContext().getApplicationContext(),"11",Toast.LENGTH_SHORT).show();
adapter.notifyDataSetChanged();
EditText Edit_search = (EditText)view.findViewById(R.id.Edit_search);
Edit_search.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable edit) {
String filterText = edit.toString();
((ContentListViewAdapter)listview.getAdapter()).getFilter().filter(filterText);
}
});
return view;
}
}
정렬하려는 곳 소스입니다.
public class ContentListViewItem {
private String content;
private String start_year;
private String start_month;
private String start_date;
private String start_ampm;
private String start_hour;
private String start_minute;
private String finish_year;
private String finish_month;
private String finish_date;
private String finish_ampm;
private String finish_hour;
private String finish_minute;
private boolean schonoff;
private boolean lotonoff;
}
아이템뷰 소스입니다 getter setter 생략했습니다
날짜 startyear, startmonth, startdate를 받아서 날짜 순으로 정렬을 하려고 하는데
String 값이라 정렬이 안되서 int 값으로 정렬하였을 때 오류는 없는데 실해이 되질 않습니다 도움 부탁드릴게요