【发布时间】:2018-11-29 10:48:23
【问题描述】:
尝试使用 EditText 过滤我的 Listview,但每次我在 EditText 上输入文本时,我的 listview 都会变为空白,并且不返回任何结果。我尝试了很多方法,这似乎是最容易实现的。任何帮助将不胜感激!
在我的适配器上:
public class AdapterTrilhos extends BaseAdapter {
private final Activity activity;
private LayoutInflater inflater;
private List<Trilhos> triList;
private ArrayList<Trilhos> arraylist=null;
public AdapterTrilhos(List<Trilhos> triList, Activity activity) {
this.activity = activity;
this.triList = triList;
this.arraylist = new ArrayList<Trilhos>();
this.arraylist.addAll(triList);
}
@Override
public int getCount() {
return this.triList.size();
}
@Override
public Object getItem(int position) {
return this.triList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.dadoslista, null);
TextView idtxt = (TextView) convertView.findViewById(R.id.txtid);
TextView tittxt = (TextView) convertView.findViewById(R.id.txttit);
// TextView usertxt = convertView.findViewById(R.id.txtuser);
TextView diftxt = (TextView) convertView.findViewById(R.id.txtdif);
RatingBar ratess= (RatingBar) convertView.findViewById(R.id.ratings);
Trilhos t = triList.get(position);
idtxt.setText(String.valueOf(t.getId()));
tittxt.setText(t.getTitulo());
// usertxt.setText(String.valueOf(t.getId_user()));
diftxt.setText(t.getDificuldade());
ratess.setRating(t.getMedia());
return convertView;
}
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
triList.clear();
if (charText.length() == 0) {
triList.addAll(arraylist);
} else {
for (Trilhos cs : arraylist) {
if (cs.getTitulo().toLowerCase(Locale.getDefault()).contains(charText)) {
triList.add(cs);
}
}
}
notifyDataSetChanged();
}
} 在我的活动中
search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int start, int before, int count) {
// TODO Auto-generated method stub
int textlength = cs.length();
String text = search.getText().toString().toLowerCase(Locale.getDefault());
adapter.filter(text);
}
@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
}
});
我打算做的是,当我在 editText 上输入文本时,它只会返回带有我输入的单词的结果
【问题讨论】:
-
附加完整的适配器类。
-
已更新,我应该发布我的所有其他活动吗?
-
尝试在过滤方法中记录你的字符串值。
-
字符串正确到达那里,问题是数据不会更新,只是给出空白列表
-
你试过这个解决方案Link吗?它为我工作!
标签: android json filter adapter