Просмотр учебника У меня есть listView
.
У меня EditText
, и я хочу отфильтровать содержимое listView по тому, что находится в EditText.
Вот мой класс адаптера :
class ListViewAdapter extends BaseAdapter {
private List<listAudienceFriendsExcept> FriendsExceptList;
private Context context;
ListViewAdapter(Context context, List<listAudienceFriendsExcept> FriendsExceptList) {
this.context = context;
this.FriendsExceptList = FriendsExceptList;
}
@Override
public int getCount() {
return FriendsExceptList.size();
}
@Override
public Object getItem(int pos) {
return FriendsExceptList.get(pos);
}
@Override
public long getItemId(int pos) {
return pos;
}
@SuppressLint("ViewHolder")
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
view = LayoutInflater.from(context).inflate(R.layout.model,viewGroup,false);
TextView name = view.findViewById(R.id.name);
ImageView avatar = view.findViewById(R.id.avatar);
final CheckBox checkbox = view.findViewById(R.id.checkbox);
final listAudienceFriendsExcept thisListAudienceFriendsExcept = FriendsExceptList.get(position);
// Setting data to listView items
checkbox.setTag(thisListAudienceFriendsExcept.getId());
name.setText(thisListAudienceFriendsExcept.getGetFirstName());
if (!thisListAudienceFriendsExcept.getGetAvatar().equals("default_avatar.png")) {
Glide.with(avatar)
.load(API_BASE_URL+"files/avatar_back_files/"+thisListAudienceFriendsExcept.getGetAvatar())
.circleCrop()
.fitCenter()
.into(avatar);
} else if (thisListAudienceFriendsExcept.getGetSex().equals("male")) {
Glide.with(avatar)
.load(API_BASE_URL+"tools/img/default_avatar.png")
.circleCrop()
.fitCenter()
.into(avatar);
} else {
Glide.with(avatar)
.load(API_BASE_URL+"tools/img/female_default_avatar.png")
.circleCrop()
.fitCenter()
.into(avatar);
}
return view;
}
}
Вот мой список:
static class listAudienceFriendsExcept {
@SerializedName("id")
private int id;
@SerializedName("first_name")
private String first_name;
@SerializedName("last_name")
private String last_name;
@SerializedName("avatar")
private String avatar;
@SerializedName("sex")
private String sex;
public listAudienceFriendsExcept(int id, String first_name, String last_name, String avatar, String sex) {
this.id = id;
this.first_name = first_name;
this.last_name = last_name;
this.avatar = avatar;
this.sex = sex;
}
int getId() {
return id;
}
String getGetFirstName() {
return first_name;
}
String getGetLastName() {
return last_name;
}
String getGetAvatar() {
return avatar;
}
String getGetSex() {
return sex;
}
}
Вот мой populateListView:
private void populateListView(List<listAudienceFriendsExcept> thisList) {
ListView listViewAudienceFriendsExcept = findViewById(R.id.listViewAudienceFriendsExcept);
ListViewAdapter adapter = new ListViewAdapter(this, thisList);
listViewAudienceFriendsExcept.setAdapter(adapter);
}
Я пробовал это:
final TextInputEditText first_name_edit_text = findViewById(R.id.first_name_edit_text);
first_name_edit_text.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence cs, int s, int b, int c) {
friendListAdapter.getFilter().filter(newText); // What is **friendListAdapter** in my case ?
}
I Я использую Retrofit для получения данных с сервера при запуске активности:
private void callServer() {
/*Create handle for the RetrofitInstance interface*/
df myAPIService = RetrofitClientInstance.getRetrofitInstance().create(df.class);
Call<List<listAudienceFriendsExcept>> call = myAPIService.getListAudienceFriendsExcept();
call.enqueue(new Callback<List<listAudienceFriendsExcept>>() {
@SuppressWarnings("NullableProblems")
@Override
public void onResponse(Call<List<listAudienceFriendsExcept>> call, Response<List<listAudienceFriendsExcept>> response) {
populateListView(response.body());
}
@SuppressWarnings("NullableProblems")
@Override
public void onFailure(Call<List<listAudienceFriendsExcept>> call, Throwable throwable) {
Toast.makeText(MainActivity.this, throwable.getMessage()+"èèè", Toast.LENGTH_LONG).show();
}
});
}
Я искал в Google и обнаружил, что: friendListAdapter.getFilter (). filter (newText); Но я не Не знаю, как использовать в моем случае.
Любое решение?
Мой другой вопрос: Как я могу передать идентификатор пользователя на сервер php?
Спасибо.