当我使用简单适配器时,我在listview中创建搜索栏。我使用以下代码。执行此代码时,它显示空指针异常。
String headlines1[]={"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE", "iPhone 4S", "Samsung Galaxy Note 800", "Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};}
for (int j = 0; j < headlines1.length; j++)
{
HashMap<String, String> map = new HashMap<String, String>();
map.put("row1", ":"+headlines1[j]);
mylistData.add(map);
}
SimpleAdpter arrayAdapter =
new SimpleAdapter(this, mylistData, R.layout.simple_list_item_2,
row, new int[] { R.id.tv });
lst.setAdapter(arrayAdapter);
lst.setTextFilterEnabled(true);
inputsearch.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged( CharSequence cs, int arg1, int arg2, int arg3)
{
// TODO Auto-generated method stub
String searchString=inputsearch.getText().toString();
int textLength=searchString.length();
//clear the initial data set
searchResults.clear();
for(int i=0;i<mylistData.size();i++)
{
String playerName=mylistData.get(i).get("row1").toString();
if(textLength<=playerName.length()){
//compare the String in EditText with Names in the ArrayList
if(searchString.equalsIgnoreCase(playerName.substring(0,textLength)))
searchResults.add(mylistData.get(i));
}
}
arrayAdapter.notifyDataSetChanged();
}
答案 0 :(得分:1)
试试这个
public class MainActivity extends Activity {
private ListView lv;
private EditText et;
//private String listview_array[] = { "ONE", "TWO", "THREE", "FOUR", "FIVE","SIX", "SEVEN", "EIGHT", "NINE", "TEN" };
String listview_array[]={"Dell Inspiron", "HTC One X", "HTC Wildfire S", "HTC Sense", "HTC Sensation XE", "iPhone 4S", "Samsung Galaxy Note 800", "Samsung Galaxy S3", "MacBook Air", "Mac Mini", "MacBook Pro"};
private ArrayList<String> array_sort = new ArrayList<String>();
int textlength = 0;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) findViewById(R.id.ListView01);
et = (EditText) findViewById(R.id.EditText01);
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listview_array));
et.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable s)
{
// Abstract Method of TextWatcher Interface.
}
public void beforeTextChanged(CharSequence s,
int start, int count, int after)
{
// Abstract Method of TextWatcher Interface.
}
public void onTextChanged(CharSequence s,
int start, int before, int count)
{
textlength = et.getText().length();
array_sort.clear();
for (int i = 0; i < listview_array.length; i++)
{
if (textlength <= listview_array[i].length())
{
if (et.getText().toString().equalsIgnoreCase(
(String)
listview_array[i].subSequence(0,
textlength)))
{
array_sort.add(listview_array[i]);
}
}
}
lv.setAdapter(new ArrayAdapter<String>
(MainActivity.this,
android.R.layout.simple_list_item_1, array_sort));
}
});
}
}