Добрый вечер, Верно, что я нашел учебное пособие по созданию панели поиска для ListView. Среди тех, что я последовал, является: Android Adding Search Functionality to ListView. Код работает нормально, но я не могу его адаптировать к моему списку. Мне пришлось перезапустить свой проект с самого начала, потому что я перепутал. Я новичок в программировании на Android и действительно нуждаюсь в помощи. Вот мой код: ShoppingListActivity.javaДобавить фильтр в мой список
public class ShoppingListActivity extends Activity {
private List<Produit> mCartList;
private ProduitAdapter mProductAdapter;
EditText inputSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shoppinglist);
mCartList = ShoppingListHelper.getCartList();
// Make sure to clear the selections
for(int i=0; i<mCartList.size(); i++) {
mCartList.get(i).selected = false;
}
// Create the list
final ListView listViewCatalog = (ListView) findViewById(R.id.ListViewCatalog);
mProductAdapter = new ProduitAdapter(mCartList, getLayoutInflater(), true);
listViewCatalog.setAdapter(mProductAdapter);
inputSearch = (EditText) findViewById(R.id.search);
inputSearch.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { }
@Override
public void afterTextChanged(Editable arg0) {
String text = inputSearch.getText().toString().toLowerCase(Locale.getDefault());
mProductAdapter.filter(text);}
});
listViewCatalog.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Intent productDetailsIntent = new Intent(getBaseContext(),ProduitDetailsActivity.class);
productDetailsIntent.putExtra(ShoppingListHelper.PRODUCT_INDEX, position);
startActivity(productDetailsIntent);
}
});
}
и это то, что содержит ShoppingListHelper.java:
public static List<Produit> getCatalog(Resources res){
if(catalog == null) {
catalog = new Vector<Produit>();
catalog.add(new Produit("Nutella", res
.getDrawable(R.drawable.nutella),
"Pate à tartiner au chocolat, au bon goût de noisettes", 750));
}
return catalog;
}
И ProduitAdapter.java
public class ProduitAdapter extends BaseAdapter {
private List<Produit> mProductList;
private LayoutInflater mInflater;
private boolean mShowQuantity;
private ArrayList<Produit> arraylist;
public ProduitAdapter(List<Produit> list, LayoutInflater inflater, boolean showQuantity) {
mProductList = list;
mInflater = inflater;
mShowQuantity = showQuantity;
}
@Override
public int getCount() {
return mProductList.size();
}
@Override
public Object getItem(int position) {
return mProductList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
mProductList.clear();
if (charText.length() == 0) {
mProductList.addAll(arraylist);
}
else
{
for (Produit wp : arraylist)
{
if (wp.getProduct().toLowerCase(Locale.getDefault()).startsWith(charText))
{
mProductList.add(wp);
}
}
}
notifyDataSetChanged();
}
Я использую затмение JUNO.
EDITED: Как вы видите в моем коде, я применил фильтр, но мой editText не работает! в компиляции не отображаются ошибки!
Заранее спасибо.
Ваша ссылка на вопрос сломана. Вы не добавили никаких сообщений о проблемах с журналом и не проблема, и ваш код не является полным. –
это ссылка: http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/ –
Хорошо, но ваши проблемы еще не выяснены. какая у вас сложность? –