gpt4 book ai didi

java - 如何在 android 中过滤自定义 ListAdapter?

转载 作者:行者123 更新时间:2023-11-30 04:12:06 25 4
gpt4 key购买 nike

我搜索了很多,但没有任何解决方案适合我。我正在设置一个自定义数组适配器,它有一个 ImageView 和一个 TextView 。我在我想添加文本的地方保留了一个编辑文本,我希望通过这些给定的文本过滤列表,当我使用字符串类型数组适配器时,这很好用,但它在我的自定义适配器中不起作用,这是我的代码:

public class CurrenciesFrom extends Activity implements OnItemClickListener {

ListView lvCurrencies;
String[] countryCode = { "BDT Bangladesh","BBF bafa" ,"USD America", "UMK Umaka","KRW Korea",
"INR India" };
int[] flag = { R.drawable.bdt, R.drawable.usd, R.drawable.aud,
R.drawable.ic_launcher ,R.drawable.usd, R.drawable.aud};
ArrayAdapter<Currency> adapter;
List<Currency> l;
EditText etsearch;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.currencies);
initializer();
lvCurrencies.setAdapter(adapter);
lvCurrencies.setOnItemClickListener(this);
etsearch.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub

}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub


CurrenciesFrom.this.adapter.getFilter().filter(s.toString());
}
});
}

private List<Currency> getModel() {
List<Currency> list = new ArrayList<Currency>();
for (int i = 0; i < countryCode.length; i++) {

list.add(get(countryCode[i], flag[i]));
}

list.get(1).setSelected(true); // select one item by default
return list;
}

private Currency get(String s, int place) {
return new Currency(s, place);
}

private void initializer() {

lvCurrencies = (ListView) findViewById(R.id.lvCurrencies);
etsearch=(EditText)findViewById(R.id.etSearch);
lvCurrencies.setTextFilterEnabled(true);
// countryCode = getResources().getStringArray(R.array.Currencies);
l = getModel();

Collections.sort(l, new Comparator<Currency>() {
@Override
public int compare(Currency c1, Currency c2) {
return c1.getName().compareToIgnoreCase(c2.getName());
}
});

adapter = new Customarrayadapter(this, l);
}

我的自定义适配器类是:

package com.powergroupbd.yahoo;

import java.util.List;

import android.app.Activity;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;

public class Customarrayadapter extends ArrayAdapter<Currency> {

private final List<Currency> list;
private final Activity context;

public Customarrayadapter(Activity context, List<Currency> list) {
super(context, R.layout.showlist, list);
this.context = context;
this.list = list;
}

static class ViewHolder {
protected TextView text;
protected ImageView sub;
protected CheckBox checkbox;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.showlist, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.text = (TextView) view.findViewById(R.id.label);
viewHolder.text.setTextColor(Color.WHITE);
viewHolder.sub = (ImageView) view.findViewById(R.id.sub);

viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Currency element = (Currency) viewHolder.checkbox.getTag();
element.setSelected(buttonView.isChecked());
System.out.println("Checked : " + element.getName());
}
});
view.setTag(viewHolder);
viewHolder.checkbox.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.text.setText(list.get(position).getName());
holder.sub.setImageResource(list.get(position).getPlace());
holder.checkbox.setChecked(list.get(position).isSelected());
return view;
}
}

请帮帮我:(

最佳答案

使用此代码,用于过滤文本

public void onTextChanged(CharSequence s, int start,
int before, int count)
{

textlength = edittext.getText().length();
text_sort.clear();
image_sort.clear();

for (int i = 0; i < text.length; i++)
{
if (textlength <= text[i].length())
{
if (edittext.getText().toString().
equalsIgnoreCase((String) text[i].subSequence(0, textlength)))
{
text_sort.add(text[i]);
image_sort.add(image[i]);
}
}
}

listview.setAdapter(new MyCustomAdapter(text_sort, image_sort));

}
}

有关更多信息,请引用此站点它可能对您有帮助http://android-helper.blogspot.in/2011/07/android-search-in-custom-listview.html

关于java - 如何在 android 中过滤自定义 ListAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10689952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com