Искать результат json после заполнения в списке Android

У меня есть Activity со списком и поиском edittext. Я разбираю некоторые данные с php в свой список. Моя проблема в том, что он ничего не делает, если я набираю текст в edittext. Я нашел несколько руководств, но всегда без разбора json.

Мой DisplayListView.java (onCreate)

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.display_listview_layout);
    listView= (ListView) findViewById(R.id.listview);
    main_uploadsAdapter =new main_uploadsAdapter(this,R.layout.row_layout);
    listView.setAdapter(main_uploadsAdapter);
    inputSearch = (EditText) findViewById(R.id.et_search);

    json_string =getIntent().getExtras().getString("json_data");
    try {
        jsonObject=new JSONObject(json_string);
        jsonArray = jsonObject.getJSONArray("result");
        int count=0;
        String userpic, uploader, subject, topic, pdf;
        while (count<jsonArray.length()){
            JSONObject JO =jsonArray.getJSONObject(count);
            userpic =JO.getString("userpic");
            uploader =JO.getString("uploader");
            subject =JO.getString("subject");
            topic =JO.getString("topic");
            pdf =JO.getString("pdf");
            final main_uploads main_uploads =new main_uploads(userpic,uploader,subject,topic,pdf);
            main_uploadsAdapter.add(main_uploads);
            count++;
        }
    } catch (JSONException e) {
        e.printStackTrace();
    }
    inputSearch.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            main_uploadsAdapter.getFilter().filter(cs);
        }
        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {
            // TODO Auto-generated method stub
        }
        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
        }
    });
}

и мой адаптер

public class main_uploadsAdapter extends ArrayAdapter {
private Context context;
List list = new ArrayList<>();
String userpic;
public main_uploadsAdapter(@NonNull Context context, @LayoutRes int resource) {
    super(context, resource);
}
public void add(main_uploads object) {
    super.add(object);
    list.add(object);
}
@Override
public int getCount() {
    return list.size();
}
@Nullable
@Override
public Object getItem(int position) {
    return list.get(position);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
    View row;
    row =convertView;
    UploadsHolder uploadsHolder;
    if (row==null){
        LayoutInflater layoutInflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row =layoutInflater.inflate(R.layout.row_layout,parent,false);
        uploadsHolder =new UploadsHolder();
        uploadsHolder.h_tv_userpic = userpic;
        uploadsHolder.h_tv_uploader = row.findViewById(R.id.tv_uploader);
        uploadsHolder.h_tv_subject = row.findViewById(R.id.tv_subject);
        uploadsHolder.h_tv_topic = row.findViewById(R.id.tv_topic);
        uploadsHolder.h_iv_userpic = row.findViewById(R.id.iv_userpic);
        uploadsHolder.h_iv_subject = row.findViewById(R.id.iv_subject);
        row.setTag(uploadsHolder);
    }else {
        uploadsHolder = (UploadsHolder) row.getTag();
    }
    final main_uploads main_uploads = (de.lauviktor.viktor.cbm.main_uploads) this.getItem(position);
    uploadsHolder.h_tv_userpic = (main_uploads.getUserpic());
    uploadsHolder.h_tv_uploader.setText(main_uploads.getUploader());
    uploadsHolder.h_tv_subject.setText(main_uploads.getSubject());
    uploadsHolder.h_tv_topic.setText(main_uploads.getTopic());
                 if (main_uploads.getSubject().equals("AE")){
        uploadsHolder.h_iv_subject.setImageResource(R.drawable.ae);
    }else        if (main_uploads.getSubject().equals("BN")){
        uploadsHolder.h_iv_subject.setImageResource(R.drawable.bn);
    }else        if (main_uploads.getSubject().equals("E")){
        uploadsHolder.h_iv_subject.setImageResource(R.drawable.e);
    }else        if (main_uploads.getSubject().equals("EP")){
        uploadsHolder.h_iv_subject.setImageResource(R.drawable.ep);
    }else        if (main_uploads.getSubject().equals("ER")){
        uploadsHolder.h_iv_subject.setImageResource(R.drawable.er);
    }else        if (main_uploads.getSubject().equals("DB")){
        uploadsHolder.h_iv_subject.setImageResource(R.drawable.db);
    }else        if (main_uploads.getSubject().equals("DK")){
        uploadsHolder.h_iv_subject.setImageResource(R.drawable.de);
    }else        if (main_uploads.getSubject().equals("M")){
        uploadsHolder.h_iv_subject.setImageResource(R.drawable.m);
    }else        if (main_uploads.getSubject().equals("RS")){
        uploadsHolder.h_iv_subject.setImageResource(R.drawable.rs);
    }else        if (main_uploads.getSubject().equals("WBL")) {
                     uploadsHolder.h_iv_subject.setImageResource(R.drawable.wbl);
                 }
        uploadsHolder.h_iv_subject.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.addCategory(Intent.CATEGORY_BROWSABLE);
            intent.setData(Uri.parse(global_variables.server_url+global_variables.server_download_pdf+main_uploads.getPdf()));
            v.getContext().startActivity(intent);
        }
    });
    return row;
}
static class UploadsHolder
{
    String h_tv_userpic;
    TextView h_tv_uploader;
    TextView h_tv_subject;
    TextView h_tv_topic;
    ImageView h_iv_userpic;
    ImageView h_iv_subject;
}

Почему не работает функция поиска?

Попробуйте без переопределения getCount () и getItem (). Надеюсь, это поможет!

i_A_mok 11.04.2018 04:35

теперь у меня пустой список, если я ищу s.th.

Vito Bioto 87 11.04.2018 17:18

Попробуйте в своем классе main_uploads переопределить toString (), чтобы вернуть String, который объединяет все ваши String feild. Если это не сработает, вам необходимо реализовать фильтр клиентов. У меня есть блог о ListView, и образцы содержат фильтр клиентов: программаandroidlistview.blogspot.com Надеюсь, что это поможет!

i_A_mok 12.04.2018 04:20

Вы можете объяснить, как это сделать?

Vito Bioto 87 12.04.2018 15:18

Внутри main_uploads.class добавьте: @Override public String toString () {return userpic + uploader + subject + topic + pdf; } В противном случае покажите ваш main_uploads.class.

i_A_mok 12.04.2018 16:36

Сейчас работает, но не все слова можно найти

Vito Bioto 87 12.04.2018 21:00

Это фильтр по умолчанию. Если это не соответствует вашим требованиям, попробуйте реализовать собственный фильтр.

i_A_mok 13.04.2018 05:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
56
1

Ответы 1

Добавить notifydatasetchanged onTextChanged.

main_uploadsAdapter.getFilter (). фильтр (cs);

main_uploadsAdapter.notifydatasetchanged ();

Другие вопросы по теме