마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스트뷰 정렬이 안되요 String 값 정렬? int변환 정렬?

0 추천

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 값으로 정렬하였을 때 오류는 없는데 실해이 되질 않습니다 도움 부탁드릴게요

 

종합설계프로젝트1 (140 포인트) 님이 2017년 6월 25일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...