Edittext中搜索listview列表中的内容并列出来
lzc_a 2016-01-08 02:25:07 不知道如何在edittext 的onTextChanged监听方法中实现,,,求助
import java.util.ArrayList;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
public class ServerListFragment extends Fragment {
private EditText mEditSearch;
private ListView mListView;
private static final String TAG="lzc_1111";
private static final int MESSAGE_SERVERLIST=0;
private ArrayList<ServerInfo> mServers;
private ServerInfoAdapter adapter;
@SuppressLint("HandlerLeak")
private Handler handlerSjzx=new Handler(){
@SuppressWarnings("unchecked")
public void handleMessage(Message msg){
super.handleMessage(msg);
switch(msg.what){
case 0:
mServers=(ArrayList<ServerInfo>)msg.obj;
//将从网络中取得的数据,写入ServerLab中的mServer变量中存储
Log.d(TAG, "数据写入ServerLab成功!");
ServerLab.get(getActivity()).setServers(mServers);
adapter=new ServerInfoAdapter(mServers);
mListView.setAdapter(adapter);
Log.d(TAG, "listview中数据填充成功");
break;
default:
break;
}
}
};
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//允许显示选项菜单
setHasOptionsMenu(true);
getActivity().setTitle(R.string.serverlist_title);
new Thread(new Runnable(){
@Override
public void run(){
Log.d(TAG ,"线程启动!");
ArrayList<ServerInfo> mServers=GetData.getSjzxList();
Message message=new Message();
message.what=MESSAGE_SERVERLIST;
message.obj=mServers;
handlerSjzx.sendMessage(message);
}
}).start();
}
//实例化生成桌面右上角的选项菜单
@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater){
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.fragment_server_list, menu);
}
//响应菜单选项
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.menu_item_about:
about();
default:
return super.onContextItemSelected(item);
}
}
public void about() {
String s = "作者:傳說" + "\r\n" + getVersion();
new AlertDialog.Builder(getActivity()).setTitle("关于软件").setMessage(s)
.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).show();
}
//获取本应用的版本号
public String getVersion() {
try {
PackageManager manager = getActivity().getPackageManager();
PackageInfo info = manager.getPackageInfo(getActivity().getPackageName(), 0);
String version = info.versionName;
return "版本:V" + version;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){
View v=inflater.inflate(R.layout.servers_list, container, false);
mListView=(ListView)v.findViewById(R.id.myList);
mListView.setTextFilterEnabled(true);
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,View view,int position,long id){
ServerInfo s=mServers.get(position);
Log.d(TAG, s.getRegionName()+"被点击");
Intent i=new Intent(getActivity(),ServerInfoPagerActivity.class);
i.putExtra(ServerInfoFragment.EXTRA_WEBIP, s.getWebIp());
startActivity(i);
}
});
mEditSearch=(EditText)v.findViewById(R.id.editSearch);
mEditSearch.addTextChangedListener(new TextWatcher(){
public void onTextChanged(CharSequence c, int start, int before, int count){
// adapter.getFilter().filter(c);
// adapter.notifyDataSetChanged();
// mListView.setAdapter(adapter);
}
public void beforeTextChanged(CharSequence c, int start, int before, int count){
// TODO Auto-generated method stub
//这是文本框改变之前会执行的动作
}
public void afterTextChanged(Editable c){
// TODO Auto-generated method stub
/**这是文本框改变之后 会执行的动作
* 因为我们要做的就是,在文本框改变的同时,我们的listview的数据也进行相应的变动,并且如一的显示在界面上。
* 所以这里我们就需要加上数据的修改的动作了。
*/
// if(c.length() == 0){
// ivDeleteText.setVisibility(View.GONE);//当文本框为空时,则叉叉消失
// }
// else {
// ivDeleteText.setVisibility(View.VISIBLE);//当文本框不为空时,出现叉叉
// myhandler.post(eChanged);
// }
}
});
return v;
}
@SuppressLint("InflateParams")
//自定义ListFragment的显示方式
private class ServerInfoAdapter extends ArrayAdapter<ServerInfo>{
public ServerInfoAdapter(ArrayList<ServerInfo> mServers){
super(getActivity(),0,mServers);
}
@Override
public View getView(int position,View convertView,ViewGroup parent){
if(convertView==null){
convertView=getActivity().getLayoutInflater().inflate(R.layout.list_item_serverinfo, null);
}
ServerInfo s=getItem(position);
TextView servernameTextView=(TextView)convertView.findViewById(R.id.serverinfo_list_item_servernameTextView);
servernameTextView.setText(s.getRegionName());
TextView webipTextView=(TextView)convertView.findViewById(R.id.serverinfo_list_item_webipTextView);
String webwz;
if("80".equals(s.getWebPort())){
webwz="http://"+s.getWebIp();
}else{
webwz="http://"+s.getWebIp()+":"+s.getWebPort();
}
webipTextView.setText(webwz);
CheckBox solvedCheckBox=(CheckBox)convertView.findViewById(R.id.serverinfo_list_item_solvedCheckBox);
solvedCheckBox.setChecked(s.getWebFlag());
return convertView;
}
}
}