как искать данные в списке переработчиков во фрагменте просмотра - PullRequest
0 голосов
/ 01 апреля 2019

Я создаю приложение, использующее поисковое представление во фрагменте для поиска данных ArrayList в программе поиска переработчиков, но ниже метод не показывает результат Не показывать мой результат фильтра в представлении переработчика Как отобразить результат фильтра в повторном представлении во фрагменте. кто-нибудь скажите мне, что изменения ниже кода, чтобы исправить эту проблему пожалуйста, помогите мне

Фрагмент

import in.getagf.pickuplines.Model.dataAdapter;
import in.getagf.pickuplines.Model.dataItem;


 /**
 * A simple {@link Fragment} subclass.
 */
public class LatestFragment extends Fragment {


private View myView;
private DatabaseReference RootRef, AdsRef;
private AdView adView;

private RecyclerView mRecyclerView;
dataAdapter mDataAdapter;
private RecyclerView.LayoutManager mDataLayoutManager;

public LatestFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    myView = inflater.inflate(R.layout.fragment_latest, container,     false);

    RootRef = FirebaseDatabase.getInstance().getReference().child("App_Data");
    AdsRef = FirebaseDatabase.getInstance().getReference().child("Apps Link").child("AdsUnitID");
    mRecyclerView = (RecyclerView) myView.findViewById(R.id.latest_recyclerView);
    mDataLayoutManager = new LinearLayoutManager(getActivity());
    mRecyclerView.setLayoutManager(mDataLayoutManager);

    mDataAdapter = new dataAdapter(getDataSetLines(), getActivity());
    mRecyclerView.setAdapter(mDataAdapter);
    getResult.clear();
    //   offlinedata();

    receiverData();
    return myView;
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}


@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.home, menu);
    MenuItem item = menu.findItem(R.id.action_search);

    SearchView sv = (SearchView) MenuItemCompat.getActionView(item);
    sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newtext) {
            mDataAdapter.getFilter().filter(newtext);
            return false;
        }
    });
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // handle item selection
    switch (item.getItemId()) {
        case R.id.action_search:
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

private void receiverData()
{
    RootRef.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
            if (dataSnapshot.exists() && !dataSnapshot.child("category").getValue().toString().equals("Good Night"))
            {

                String Lines = dataSnapshot.child("lines").getValue().toString();
                String Pic = dataSnapshot.child("pic").getValue().toString();
                String visite_id = dataSnapshot.getKey();
                dataItem obj = new dataItem(visite_id, Lines, Pic);
                getResult.add(obj);
                mDataAdapter.notifyDataSetChanged();
            }
        }

        @Override
        public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {

        }

        @Override
        public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

    AdsRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                String fB_Latest = dataSnapshot.child("fB_Latest").getValue(String.class);

                // Facebook Banner Ads
                adView = new AdView(getActivity(), fB_Latest, AdSize.BANNER_HEIGHT_50);
                LinearLayout adContainer = (LinearLayout) myView.findViewById(R.id.latest_facebook_ads);
                adContainer.addView(adView);
                adView.loadAd();
                // end
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
}

@Override
public void onDestroy() {
    if (adView != null) {
        adView.destroy();
    }
    super.onDestroy();
}

private ArrayList<dataItem> getResult = new ArrayList<dataItem>();
private List<dataItem> getDataSetLines() {
    return getResult;
}
}

DataAdapter

/**
 * Created by Vinay Singh on 16/02/2019.
 */



public class dataAdapter extends RecyclerView.Adapter<DataViewHolders>             
implements Filterable {

private List<dataItem> myList;
private  List<dataItem> myListFull;
private Context context;

public dataAdapter(List<dataItem> myList, Context context) {
    this.myList = myList;
    this.context = context;
    myListFull = new ArrayList<>(myList);
}

@Override
public DataViewHolders onCreateViewHolder(ViewGroup viewGroup, int position) {

    View layoutView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_view, null, false);
    RecyclerView.LayoutParams lp = new RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    layoutView.setLayoutParams(lp);
    DataViewHolders rcv = new DataViewHolders(layoutView);

    return rcv;
}

@Override
public void onBindViewHolder(DataViewHolders holder, int position) {

    String lines = myList.get(position).getLines();
    holder.mLines.setText(myList.get(position).getLines());
    holder.mVisit_id.setText(myList.get(position).getVisite_id());
    if (myList.get(position).getPic().equals("default")) {
        Picasso.get().load(R.drawable.app_logo).into(holder.mImage);
    }else if (myList.get(position).getPic().equals("Funny"))
    {
        Picasso.get().load(R.drawable.funny).into(holder.mImage);
    }
    else if (myList.get(position).getPic().equals("Romantic"))
    {
        Picasso.get().load(R.drawable.romantic).into(holder.mImage);
    }
    else if (myList.get(position).getPic().equals("Chat Tips"))
    {
        Picasso.get().load(R.drawable.chat).into(holder.mImage);
    }
    else if (myList.get(position).getPic().equals("Good Morning"))
    {
        Picasso.get().load(R.drawable.goodmorning).into(holder.mImage);
    }
    else if (myList.get(position).getPic().equals("Motivation"))
    {
        Picasso.get().load(R.drawable.motivation).into(holder.mImage);
    }
    else if (myList.get(position).getPic().equals("Shayri"))
    {
        Picasso.get().load(R.drawable.shayari).into(holder.mImage);
    }
    else if (myList.get(position).getPic().equals("WhatsApp"))
    {
        Picasso.get().load(R.drawable.whatsapp).into(holder.mImage);
    }
    else if (myList.get(position).getPic().equals("Jokes"))
    {
        Picasso.get().load(R.drawable.jokes).into(holder.mImage);
    }
    else if (myList.get(position).getPic().equals("Good Night"))
    {
        Picasso.get().load(R.drawable.goodnight).into(holder.mImage);
    }
    else if (myList.get(position).getPic().equals("Chatting"))
    {
        Picasso.get().load(R.drawable.chatting).into(holder.mImage);
    }
    else
    {
        Picasso.get().load(R.drawable.app_logo).into(holder.mImage);
    }

}

@Override
public int getItemCount() {
    return this.myList.size();
}

@Override
public Filter getFilter() {
    return myListFilter;
}

private Filter myListFilter = new Filter() {
    @Override
    protected FilterResults performFiltering(CharSequence constraint) {
        String charString = constraint.toString();
        if (charString.isEmpty())
        {
            myListFull = myList;
        }
        else
        {
            List<dataItem> filteredList = new ArrayList<>();
            for (dataItem item : myListFull)
            {
                if (item.getLines().contains(charString)){
                    filteredList.add(item);
                }
            }
            myListFull = filteredList;
        }
        FilterResults results = new FilterResults();
        results.values = myListFull;
        return results;
    }

    @Override
    protected void publishResults(CharSequence constraint, FilterResults results) {
        myList.clear();
        myList.addAll((List) results.values);
        notifyDataSetChanged();
    }

};
}

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Сначала удалите этот код из своего фрагмента

private ArrayList<dataItem> getResult = new ArrayList<dataItem>();
private List<dataItem> getDataSetLines() {
    return getResult;
}
}

и инициализированный ArrayList выше метода onCreateView и измените этот код в методе onCreateView

mDataAdapter = new dataAdapter(getResult, getContext());

Теперь добавьте этот код в свой адаптер

List<dataItem> filteredList = new ArrayList<>();
    for (dataItem item : myList) // myListFull wrong
    {
        if (item.getLines().contains(charString)){
            filteredList.add(item);
        }
    }
    myListFull = filteredList;

В вашем ArrayList myListFull не добавлять данные myList.

Надеюсь, это поможет вам!

Спасибо.

0 голосов
/ 01 апреля 2019
    List<dataItem> filteredList = new ArrayList<>();
    for (dataItem item : myList) // myListFull wrong
    {
        if (item.getLines().contains(charString)){
            filteredList.add(item);
        }
    }
    myListFull = filteredList;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...