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

actionbar에 검색기능 문의드려요

0 추천

fragment를 이용한 탭뷰형식이고 데이터는 php서버에서 json으로 받아오는 상태입니다. 현재 액션바에 검색을 달았는데 검색이 안되는것은아니고..검색을하면 매칭이되지않는 데이터들이 검색되어 문의드립니다.

검색하고 싶은 방식은 setFilterText로 검색하는것인데 안드로이드 개발이 처음이라 맞는지 모르겠어 프레그먼트 소스와 어뎁터 소스 첨부합니다. 검색이 되어야 하는부분이 제목, 내용, 견종 3가지중 일치값이있으면 필터링 되어 보이게 하고 싶습니다.. 무었을 어떻게 해야할까요 ㅠㅠ 이틀째 못찾고있습니당,,

 

어뎁터는 아래와같습니다.

package com.app.diffchild.maree;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;

import org.w3c.dom.Text;

/**
 * Created by dev_piljae on 2016-11-08.
 */

public class Adapter extends ArrayAdapter<String> {

    Context c;
    String[] title;
    String[] images;
    String[] prices;
    String[] idxs;
    String[] dogNames;
    LayoutInflater inflater;

    public Adapter(Context context, String[] title, String[] images, String[] prices, String[] idxs, String[] dogNames) {
        super(context, R.layout.search_list, title);

        this.c = context;
        this.title = title;
        this.images = images;
        this.prices = prices;
        this.idxs = idxs;
        this.dogNames = dogNames;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){

        if(convertView == null){
            inflater = (LayoutInflater) c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.search_list, null);
        }

        TextView titleView = (TextView) convertView.findViewById(R.id.titleView);
        ImageView img = (ImageView) convertView.findViewById(R.id.imageView);
        TextView priceView = (TextView) convertView.findViewById(R.id.priceView);
        TextView dogName = (TextView) convertView.findViewById(R.id.dogNameView);

        dogName.setText(dogNames[position]);
        titleView.setText(title[position]);
        Picasso.with(getContext()).load(images[position]).resize(1050, 432).centerCrop().into(img);
        priceView.setText(prices[position]);
        convertView.setTag(idxs[position]);

//        img.setImageResource(images[position]);

        return convertView;
    }
}

프레그먼트쪽은 소스가 길어 다 첨부가안되어서..어뎁터 설정부분과 검색부분만 첨부합니다.

lv = (ListView) getActivity().findViewById(R.id.list_view);

final Adapter adapter = new Adapter(getActivity(), items.toArray(title), imgItems.toArray(images), priceItems.toArray(prices), idxItems.toArray(idxs), dogNameItems.toArray(dogNames));
lv.setAdapter(adapter);
lv.setTextFilterEnabled(true);

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    menu.clear();
    inflater.inflate(R.menu.menu, menu);

    MenuItem item = menu.findItem(R.id.action_search);
    SearchView searchView = new SearchView(((IndexActivity) this.getContext()).getSupportActionBar().getThemedContext());
    MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM);
    MenuItemCompat.setActionView(item, searchView);
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {

            return false;
        }
        @Override
        public boolean onQueryTextChange(String newText) {
            if (TextUtils.isEmpty(newText))
            {
                lv.clearTextFilter();
            }
            else
            {
                lv.setFilterText(newText.toString());
            }

            return true;
        }
    });
    searchView.setOnClickListener(new View.OnClickListener() {
                                      @Override
                                      public void onClick(View v) {

                                      }
                                  }
    );

}

 

dkTkd (120 포인트) 님이 2017년 1월 5일 질문

답변 달기

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