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) {
}
}
);
}