0
我有一個列表視圖,每行中的項目和子項目。我有一個EditText字段,我想用它來過濾鍵入文本的列表。我希望能夠搜索項目和子項目。有人能夠指出我如何做到這一點的正確方向嗎?過濾Android列表查看
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import com.google.android.gms.maps.model.Marker;
public class FarmMarketList extends RSFM
{
ListView marketList;
ArrayList<String> titles = new ArrayList<String>();
ArrayList<String> addresses = new ArrayList<String>();
ArrayAdapter<String> adapter;
EditText listSearch;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.farm_market_list);
marketList = (ListView) findViewById(R.id.listFarmMarkets);
listSearch = (EditText) findViewById(R.id.listSearch);
for(Marker m : list)
{
titles.add(m.getTitle());
addresses.add(m.getSnippet());
}
List<Map<String, String>> data = new ArrayList<Map<String, String>>();
for(int i = 0; i < titles.size(); i++)
{
Map<String, String> datum = new HashMap<String, String>(2);
datum.put("title", titles.get(i));
datum.put("subtitle", addresses.get(i));
data.add(datum);
}
SimpleAdapter simpleAdapter = new SimpleAdapter(FarmMarketList.this, data, android.R.layout.simple_list_item_2, new String[] {"title", "subtitle"}, new int[] {android.R.id.text1, android.R.id.text2});
marketList.setAdapter(simpleAdapter);
// Row Selection
marketList.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
TextView text1 = (TextView) v.findViewById(android.R.id.text1);
TextView text2 = (TextView) v.findViewById(android.R.id.text2);
Intent i = new Intent(FarmMarketList.this, FarmMarketDetails.class);
i.putExtra("selectedTitle", text1.getText());
i.putExtra("selectedAddress", text2.getText());
startActivity(i);
}
});
}
}
編輯:我添加了此代碼,但它導致應用程序崩潰時,我開始在EditText字段中鍵入。
listSearch.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3)
{
FarmMarketList.this.adapter.getFilter().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3)
{
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0)
{
// TODO Auto-generated method stub
}
});
我建議[此鏈接](HTTP工作://開發商.android.com/guide/topics/ui/controls/text.html#AutoComplete)和[這個鏈接](http://developer.android.com/reference/android/widget/AutoCompleteTextView.html) – MiStr
試試這個:http ://stackoverflow.com/questions/1737009/how-to-make-a-nice-looki ng-listview-filter-on-android –
使用此查找解決方案http://stackoverflow.com/questions/17720481/how-could-i-filter-the-listview-using-baseadapter/20743661#20743661 –