package jong.example.jsonex;
import java.util.ArrayList;
import java.util.Locale;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Filter;
import android.widget.TextView;
public class JsonListAdapter extends ArrayAdapter<JsonBean> {
private Context mcContext;
private int mResource;
private ArrayList<JsonBean> mList, dataList;
private LayoutInflater mInflater;
public JsonListAdapter(Context context, int resource,
ArrayList<JsonBean> objects) {
super(context, resource, objects);
this.mcContext = context;
this.mResource = resource;
this.dataList=objects;
this.mList = objects;
this.mInflater = (LayoutInflater) mcContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
JsonBean jsons = mList.get(position);
if (convertView == null) {
convertView = mInflater.inflate(mResource, null);
}
if (jsons != null) {
TextView latitudeText = (TextView) convertView
.findViewById(R.id.latitude_text);
TextView longitudeText = (TextView) convertView
.findViewById(R.id.longitude_text);
TextView nameText = (TextView) convertView
.findViewById(R.id.name_text);
TextView addressText = (TextView) convertView
.findViewById(R.id.address_text);
TextView tellText = (TextView) convertView
.findViewById(R.id.tel_text);
String latitude = jsons.getLatitude();
String longitude = jsons.getLongitude();
String name = jsons.getName();
String address = jsons.getAddress();
String tel = jsons.getTel();
latitudeText.setText(latitude);
longitudeText.setText(longitude);
nameText.setText(name);
addressText.setText(address);
tellText.setText(tel);
}
return convertView;
}
public void resultData()
{
dataList=mList;
}
@Override
public Filter getFilter() {
Filter dataFilter=new Filter(){
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results=new FilterResults();
ArrayList<JsonBean> filterDataList=new ArrayList<JsonBean>();
if(mList==null)
{
mList=new ArrayList<JsonBean>(dataList); //Save the results of a filtering data
}
if(constraint ==null || constraint.length()==0)
{
// set the original result to return
results.values=mList;
results.count=mList.size();
}
else
{
filterDataList.clear();
//constraint=constraint.toString().toLowerCase();
for(JsonBean beans: dataList)
{
if(beans.getName().toUpperCase().startsWith(constraint.toString().toUpperCase()))
{
filterDataList.add(beans);
Log.i("@#@#@#@#@##@", beans.getName());
}
}
results.values=filterDataList;
results.count=filterDataList.size();
}
return results;
}
@Override
protected void publishResults(CharSequence constraint,
FilterResults results) {
// TODO Auto-generated method stub
dataList=(ArrayList<JsonBean>) results.values;
notifyDataSetChanged();
}
};
return dataFilter;
}
}
이게 어댑터 뷰 소스이고
mJsonListView = (ListView) findViewById(R.id.list);
mJsonList = new ArrayList<JsonBean>();
mAdapter = new JsonListAdapter(this, R.layout.jong_vetlist, mJsonList);
mJsonListView.setTextFilterEnabled(true);
mJsonListView.setAdapter(mAdapter);
searchEdit = (EditText) findViewById(R.id.search_edit);
searchBtn = (Button) findViewById(R.id.search_btn);
searchBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String text=searchEdit.getText().toString();
Log.i("hey!!!!", text);
mAdapter.getFilter().filter(text);
}
});
이건 액티비티에서 리스트뷰를 갱신하는 형태 입니다.
이미 리스트뷰에 항목들이 띄어져있는데
지금 검색한 것을 검색버튼을 누르면 필터를 이용해서 리스트뷰에 갱신을 하고 싶은데 갱신이 되지 않습니다.
어떻게 해야될지 감이안잡히네요 ㅠㅠ