Java 当Edittext for Search为空时,如何显示Listview元素?
当edittext被删除并且没有搜索值时,我找不到用项目填充Listview的方法。当我在输入字符时使用Log查看值时,我发现即使删除了edittext值,最后一个字符仍然保留 当activity类在onstart()方法上时,我将条件设置为edittext.length()等于0以监视listview项。在我写了一些东西并删除之后,listview看起来是空的。以下是我的代码块:Java 当Edittext for Search为空时,如何显示Listview元素?,java,android,listview,filtering,Java,Android,Listview,Filtering,当edittext被删除并且没有搜索值时,我找不到用项目填充Listview的方法。当我在输入字符时使用Log查看值时,我发现即使删除了edittext值,最后一个字符仍然保留 当activity类在onstart()方法上时,我将条件设置为edittext.length()等于0以监视listview项。在我写了一些东西并删除之后,listview看起来是空的。以下是我的代码块: public class ProductListActivity extends Activity {
public class ProductListActivity extends Activity {
public static final String TAG = ProductListActivity.class.getSimpleName();
private static final String Valeron_URL = "http://www.tac.com.tr/valeron.xml";
ProductListAdapter productListAdapter;
ListView lvProducts;
EditText lblSearch;
private List<Product> productList = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_productlist_temp);
new ProductDownloaderTask(this).execute(Valeron_URL);
initializeComponents();
}
private void initializeComponents() {
lvProducts = (ListView) findViewById(R.id.lvProducts);
lblSearch = (EditText) findViewById(R.id.lblSearch);
}
public void updateProducts(List<Product> products) {
productListAdapter = new ProductListAdapter(this, products);
lvProducts.setAdapter(productListAdapter);
lblSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String text = lblSearch.getText().toString().toLowerCase(Locale.getDefault());
productListAdapter.filter(text);
}
});
}
}
公共类ProductListActivity扩展活动{
public static final String TAG=ProductListActivity.class.getSimpleName();
私有静态最终字符串Valeron_URL=”http://www.tac.com.tr/valeron.xml";
ProductListAdapter ProductListAdapter;
ListView产品;
编辑文本搜索;
私有列表productList=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u productlist\u temp);
新产品下载任务(this).execute(Valeron_URL);
初始化组件();
}
私有void initializeComponents(){
lvProducts=(ListView)findViewById(R.id.lvProducts);
lblSearch=(EditText)findViewById(R.id.lblSearch);
}
公共无效更新产品(列出产品){
productListAdapter=新productListAdapter(此,产品);
lvProducts.setAdapter(productListAdapter);
lblSearch.addTextChangedListener(新的TextWatcher(){
@凌驾
更改前文本之前的公共void(字符序列s、int start、int count、int after){
}
@凌驾
public void onTextChanged(字符序列、int start、int before、int count){
}
@凌驾
公共无效后文本已更改(可编辑){
String text=lblSearch.getText().toString().toLowerCase(Locale.getDefault());
productListAdapter.filter(文本);
}
});
}
}
在这里
public class ProductListAdapter extends BaseAdapter {
private ProductListActivity listActivity;
private LayoutInflater layoutInflater;
private List<Product> products = null;
ArrayList<Product> productList;
public ProductListAdapter(ProductListActivity listActivity, List<Product> products) {
this.listActivity = listActivity;
this.layoutInflater = listActivity.getLayoutInflater();
this.products = products;
this.productList = new ArrayList<Product>();
this.productList.addAll(products);
}
@Override
public int getCount() {
return products.size();
}
@Override
public Object getItem(int position) {
return products.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = layoutInflater.inflate(R.layout.activity_productlist, parent, false);
ImageView iwProduct = (ImageView) view.findViewById(R.id.iwProduct);
TextView lblProductInfo = (TextView) view.findViewById(R.id.lblProductInfo);
TextView lblProductColor = (TextView) view.findViewById(R.id.lblProductColor);
final Product currentProduct = products.get(position);
iwProduct.setImageBitmap(currentProduct.getProductImage());
lblProductInfo.setText(currentProduct.getProductName());
lblProductColor.setText(currentProduct.getProductColor());
view.setTag(currentProduct);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
final Product currentProduct = products.get(position);
Intent intent = new Intent(listActivity, ProductDetailActivity.class);
intent.putExtra("productID", currentProduct.getProductId());
intent.putExtra("productSKU", currentProduct.getProductSKU());
intent.putExtra("productName", currentProduct.getProductName());
intent.putExtra("productColor", currentProduct.getProductColor());
intent.putExtra("productPrice", String.valueOf(currentProduct.getProductPrice()));
intent.putExtra("productSizeDetail", currentProduct.getProductSizeDetail());
listActivity.startActivity(intent);
}
});
return view;
}
public void filter(String text) {
text = text.toLowerCase(Locale.getDefault());
products.clear();
if (text.length() == 0) {
this.products.addAll(products);
} else {
for (Product product : products) {
if (product.getProductName().toLowerCase(Locale.getDefault())
.contains(text)) {
this.products.add(product);
}
}
}
notifyDataSetChanged();
}
}
公共类ProductListAdapter扩展了BaseAdapter{
私人产品列表活动列表活动;
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
私有列表产品=空;
ArrayList产品列表;
public ProductListAdapter(ProductListActivity listActivity,列出产品){
this.listActivity=listActivity;
this.layoutInflater=listActivity.getLayoutInflater();
这一点。产品=产品;
this.productList=新的ArrayList();
this.productList.addAll(产品);
}
@凌驾
public int getCount(){
返回产品。大小();
}
@凌驾
公共对象getItem(int位置){
退货。获得(职位);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
视图=LayoutFlater.inflate(R.layout.activity\u productlist,父项,false);
ImageView iwProduct=(ImageView)view.FindView wByd(R.id.iwProduct);
TextView lblProductInfo=(TextView)view.findViewById(R.id.lblProductInfo);
TextView lblProductColor=(TextView)view.findViewById(R.id.lblProductColor);
最终产品currentProduct=products.get(位置);
iwProduct.setImageBitmap(currentProduct.getProductImage());
lblProductInfo.setText(currentProduct.getProductName());
lblProductColor.setText(currentProduct.getProductColor());
view.setTag(当前产品);
view.setOnClickListener(新的view.OnClickListener(){
@凌驾
公共void onClick(视图arg0){
最终产品currentProduct=products.get(位置);
意向意向=新意向(listActivity、ProductDetailActivity.class);
intent.putExtra(“productID”,currentProduct.getProductId());
intent.putExtra(“productSKU”,currentProduct.getProductSKU());
intent.putExtra(“productName”,currentProduct.getProductName());
intent.putExtra(“productColor”,currentProduct.getProductColor());
intent.putExtra(“productPrice”,String.valueOf(currentProduct.getProductPrice());
intent.putExtra(“productSizeDetail”,currentProduct.getProductSizeDetail());
listActivity.startActivity(意向);
}
});
返回视图;
}
公共无效筛选器(字符串文本){
text=text.toLowerCase(Locale.getDefault());
产品;
如果(text.length()==0){
this.products.addAll(产品);
}否则{
用于(产品:产品){
if(product.getProductName().toLowerCase(Locale.getDefault())
.包含(文本)){
此.products.add(产品);
}
}
}
notifyDataSetChanged();
}
}
如何解决它?您的filter()
方法似乎不正常
更新您的ProductListAdapter
,如下所示:
public class ProductListAdapter extends BaseAdapter {
private ProductListActivity listActivity;
private LayoutInflater layoutInflater;
private List<Product> products;
private List<Product> productList;
public ProductListAdapter(ProductListActivity listActivity, List<Product> products) {
this.listActivity = listActivity;
this.layoutInflater = listActivity.getLayoutInflater();
this.products = products;
this.productList = new ArrayList<Product>();
this.productList.addAll(products);
}
@Override
public int getCount() {
return products.size();
}
@Override
public Object getItem(int position) {
return products.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = layoutInflater.inflate(R.layout.activity_productlist, parent, false);
ImageView iwProduct = (ImageView) view.findViewById(R.id.iwProduct);
TextView lblProductInfo = (TextView) view.findViewById(R.id.lblProductInfo);
TextView lblProductColor = (TextView) view.findViewById(R.id.lblProductColor);
final Product currentProduct = products.get(position);
iwProduct.setImageBitmap(currentProduct.getProductImage());
lblProductInfo.setText(currentProduct.getProductName());
lblProductColor.setText(currentProduct.getProductColor());
view.setTag(currentProduct);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
final Product currentProduct = products.get(position);
Intent intent = new Intent(listActivity, ProductDetailActivity.class);
intent.putExtra("productID", currentProduct.getProductId());
intent.putExtra("productSKU", currentProduct.getProductSKU());
intent.putExtra("productName", currentProduct.getProductName());
intent.putExtra("productColor", currentProduct.getProductColor());
intent.putExtra("productPrice", String.valueOf(currentProduct.getProductPrice()));
intent.putExtra("productSizeDetail", currentProduct.getProductSizeDetail());
listActivity.startActivity(intent);
}
});
return view;
}
public void filter(String text) {
text = text.toLowerCase(Locale.getDefault());
products.clear();
if (text.length() == 0) {
this.products.addAll(productList);
} else {
for (Product product : productList) {
if (product.getProductName().toLowerCase(Locale.getDefault())
.contains(text)) {
this.products.add(product);
}
}
}
notifyDataSetChanged();
}
公共类ProductListAdapter扩展了BaseAdapter{
私人产品列表活动列表活动;
私人停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场停车场;
私人上市产品;
私有列表产品列表;
public ProductListAdapter(ProductListActivity listActivity,列出产品){
this.listActivity=listActivity;
this.layoutInflater=listActivity.getLayoutInflater();
这一点。产品=产品;
this.productList=新的ArrayList();
this.productList.addAll(产品);
}
@凌驾
public int getCount(){
返回产品。大小();
}
@凌驾
公共对象getItem(int位置){
退货。获得(职位);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公众视野