我希望 recyclerview 显示我的数据库中包含的数据。如果 getfilter() 是在我的适配器文件中创建的,我对在 getfilter() 中声明的内容感到困惑。如果有其他建议如何解决这个问题,我将不胜感激。
MainActivity.java
public class MainActivity extends AppCompatActivity {
RecyclerView recView;
TextView textView;
ArrayList<HashMap<String, String>> arrayList;
Dialog dialog;
public static final String url = "http://xxx/cobalistuser/menu.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog = new Dialog(MainActivity.this);
dialog.setContentView(R.layout.dialog_searchable_spinner);
dialog.getWindow().setLayout(850, 1000);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
EditText editText = dialog.findViewById(R.id.editText);
var();
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
arrayList = new ArrayList<>();
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, response -> {
Log.d("response ", response);
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray jsonArray = jsonObject.getJSONArray("users");
for (int a = 0; a < jsonArray.length(); a++) {
JSONObject json = jsonArray.getJSONObject(a);
HashMap<String, String> map = new HashMap<>();
map.put("id_users", json.getString("id_users"));
map.put("username", json.getString("username"));
map.put("user_type", json.getString("user_type"));
arrayList.add(map);
AdapterList adapter = new AdapterList(MainActivity.this, arrayList);
recView.setAdapter(adapter);
editText.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) {
adapter.getFilter().filter(s);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
} catch (JSONException e) {
e.printStackTrace();
}
}, error -> Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show());
requestQueue.add(stringRequest);
}
});
}
private void var() {
RecyclerView recView = dialog.findViewById(R.id.recView);
LinearLayoutManager llm = new LinearLayoutManager(this);
llm.setOrientation(LinearLayoutManager.VERTICAL);
recView.setLayoutManager(llm);
}
}
AdapterList.java
public class AdapterList extends RecyclerView.Adapter<AdapterList.ViewHolder> {
Context context;
ArrayList<HashMap<String, String>> arrayList;
public AdapterList(MainActivity mainActivity, ArrayList<HashMap<String, String>> arrayList) {
this.context = mainActivity;
this.arrayList = arrayList;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, null);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// Get position of ViewHolder class
holder.user_type.setText(arrayList.get(position).get("user_type"));
holder.username.setText(arrayList.get(position).get("username"));
}
@Override
public int getItemCount() {
return arrayList.size();
}
// This ViewHolder of RecycleView
public static class ViewHolder extends RecyclerView.ViewHolder {
// deklarasi variabel yang ada di row.xml
TextView username, user_type;
public ViewHolder(View itemView) {
super(itemView);
username = itemView.findViewById(R.id.username);
user_type = itemView.findViewById(R.id.user_type);
}
}
}
实际上我很难实现可搜索的微调器 (toptoche),所以我切换到了 editText,其中包含基于互联网教程的列表视图。但我遇到了困难