I have a recycler and inside that recycler cardviews are shown with info brought from a REST API and I would like to implement this feature in my application but I do not know how to do it, I have seen several examples online but I can not grasp what is going on in the adapter and what is in the main, if you could guide me or show me an easy example I would appreciate it very much
Adapter
public class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.ViewHolder> {
private ArrayList<Business> basicsList;
Bitmap bitmap;
private Context mContext;
int idb;
private Activity activity;
private int layoutMolde;
public SearchAdapter(Activity activity, ArrayList<Business> list, int layout ) {
this.activity = activity;
this.basicsList = list;
layoutMolde = layout;
}
@Override
public SearchAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.search_row, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// holder.mTitle.setText(premiumsList.get(position));
holder.mTitle.setText(basicsList.get(position).getName());
//holder.mImg.setImageURI(Uri.parse(premiumsList.get(position).getLogo_url_string()));
idb = basicsList.get(position).getId();
if (basicsList.get(position).getRating()==null){
holder.txtsearch.setText(0);
}else {
holder.txtsearch.setText(basicsList.get(position).getRating());
}
if(basicsList.get(position).getLogo_url_string()!=null){
Glide.with(activity).load(basicsList.get(position).getLogo_url_string()).into(holder.mImg);
Log.d("",String.valueOf(basicsList.get(position).getIcon_default()));
}
else{
Glide.with(activity).load(basicsList.get(position).getIcon_default()).into(holder.mImg);
}
}
@Override
public int getItemCount() {
return basicsList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTitle;
public ImageView mImg;
public ImageView logo;
public RatingBar rating_basic;
public TextView txtsearch;
public ViewHolder(View itemView) {
super(itemView);
mTitle = (TextView) itemView.findViewById(R.id.nom_search);
mImg = (ImageView) itemView.findViewById(R.id.img_search);
txtsearch=(TextView) itemView.findViewById(R.id.txtsearch_rating);
rating_basic=(RatingBar) itemView.findViewById(R.id.rating_search);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(v.getContext(), BusinessPremium.class);
int position = getAdapterPosition();
idb = basicsList.get(position).getId();
in.putExtra("no", idb);
v.getContext().startActivity(in);
}
});
}
}
}
Fragment
public class SearchFragment extends Fragment
{
private ArrayList<Business> arrayBusiness,arrayBasics;
private Gson gson;
private static final Type BUSINESS_TYPE = new TypeToken<ArrayList<Business>>() {}.getType();
private TextView textView;
private RecyclerView.LayoutManager mLayoutManager;
private RecyclerView.LayoutManager mLowerLayoutManager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View android = inflater.inflate(R.layout.search_activity, container, false);
textView = (TextView) android.findViewById(R.id.textView);
Toolbar toolbar = (Toolbar) android.findViewById(R.id.toolbar);
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
setHasOptionsMenu(true);
if (!internetConnectionCheck(SearchFragment.this.getActivity()))
{
Toast.makeText(getApplicationContext(), "Error de Conexión", Toast.LENGTH_LONG).show();
}
new PlifRequestBase(getActivity())
{
@Override
public JsonObject onHttpOk(JsonObject response) throws JSONException
{
JsonObject data, pagination_details = null, businesses, cover_premium, cv, iurl;
JsonArray premiums, basics;
String url_img;
if (response.get("pagination") == null)
{
data = response;
}else {
pagination_details = response.get("pagination").getAsJsonObject();
data = response.get("data").getAsJsonObject();
businesses = data.get("businesses").getAsJsonObject();
premiums = businesses.get("premiums").getAsJsonArray();
//images_premiums=data.get("category_image").getAsJsonObject();
basics = businesses.get("basics").getAsJsonArray();
gson = new Gson();
arrayBusiness = new ArrayList<Business>();
arrayBasics= new ArrayList<Business>();
arrayBusiness = gson.fromJson(premiums, BUSINESS_TYPE);
arrayBasics=gson.fromJson(basics, BUSINESS_TYPE);
Log.d("size", String.valueOf(arrayBusiness.size()));
//Log.d("", String.valueOf(images_premiums));
if (getActivity() == null)
return response;
SearchFragment.this.getActivity().runOnUiThread(new Runnable()
{
@Override
public void run() {
RecyclerView recycler = (RecyclerView) SearchFragment.this.getActivity().findViewById(R.id.high_recycler_view);
SearchAdapter adapter = new SearchAdapter(getActivity(), arrayBusiness, R.layout.search_low_layout);
recycler.setNestedScrollingEnabled(false);
mLayoutManager = new GridLayoutManager(SearchFragment.this.getActivity(),2);
recycler.setLayoutManager(mLayoutManager);
recycler.setAdapter(adapter);
for (int i = 0; i < arrayBusiness.size(); i++)
{
Log.d("Imprime", arrayBusiness.get(i).getName());
}
GifTextView loading = (GifTextView)SearchFragment.this.getActivity().findViewById(R.id.loadingSearch);
TextView loadingText = (TextView)SearchFragment.this.getActivity().findViewById(R.id.loadingTextSearch);
loading.setVisibility(View.GONE);
loadingText.setVisibility(View.GONE);
}
});
}
if (pagination_details.isJsonNull())
{
Log.d("Paginacion", pagination_details.toString());
}
return data;
}
@Override
public void onHttpCreate(JsonObject response) throws JSONException
{
}
@Override
public void onHttpUnprocessableEntity(JsonObject response) throws JSONException {
this.cancel(true);
final String error = response.get("errors").toString();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getActivity().getApplicationContext(), error, Toast.LENGTH_LONG).show();
}
});
}
}.execute("businesses/search", "GET");
return android;
}
@Override
public void onPrepareOptionsMenu(Menu menu)
{
// MenuItem mSearchMenuItem = menu.findItem(R.id.action_search);
final MenuItem mSearchMenuItem = menu.findItem(R.id.action_search);
final SearchView searchView = (SearchView) mSearchMenuItem.getActionView();
//final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setQueryHint(getText(R.string.search));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextSubmit(final String query)
{
//Toast.makeText(SearchFragment.this.getActivity(), R.string.buscado, Toast.LENGTH_SHORT).show();
searchView.setQuery("", false);
searchView.setIconified(true);
new PlifRequestBase(getActivity()){
@Override
public JsonObject onHttpOk(JsonObject response) throws JSONException
{
JsonObject data, pagination_details = null, businesses, cover_premium, cv, iurl;
JsonArray premiums, basics;
if (response.get("pagination") == null)
{
data = response;
}else {
pagination_details = response.get("pagination").getAsJsonObject();
data = response.get("data").getAsJsonObject();
businesses = data.get("businesses").getAsJsonObject();
premiums = businesses.get("premiums").getAsJsonArray();
basics = businesses.get("basics").getAsJsonArray();
gson = new Gson();
arrayBusiness = new ArrayList<Business>();
arrayBasics= new ArrayList<Business>();
arrayBusiness = gson.fromJson(premiums, BUSINESS_TYPE);
arrayBasics=gson.fromJson(basics, BUSINESS_TYPE);
Log.d("size", String.valueOf(arrayBusiness.size()));
//Log.d("", String.valueOf(images_premiums));
SearchFragment.this.getActivity().runOnUiThread(new Runnable()
{
@Override
public void run() {
RecyclerView recycler = (RecyclerView) SearchFragment.this.getActivity().findViewById(R.id.high_recycler_view);
RecyclerView recyclerbasics=(RecyclerView) SearchFragment.this.getActivity().findViewById(R.id.lower_recycler_view);
SearchHorizontalAdapter adapter = new SearchHorizontalAdapter(getActivity(), arrayBusiness, R.layout.search_high_layout);
SearchVerticalAdapter adapterbasics=new SearchVerticalAdapter(getActivity(),arrayBasics,R.layout.search_low_layout);
recyclerbasics.setNestedScrollingEnabled(false);
recycler.setNestedScrollingEnabled(false);
mLowerLayoutManager = new GridLayoutManager(SearchFragment.this.getActivity(),2);
recyclerbasics.setLayoutManager(mLowerLayoutManager);
recyclerbasics.setAdapter(adapterbasics);
mLayoutManager = new LinearLayoutManager(SearchFragment.this.getActivity(), LinearLayoutManager.HORIZONTAL, false);
recycler.setLayoutManager(mLayoutManager);
recycler.setAdapter(adapter);
for (int i = 0; i < arrayBusiness.size(); i++)
{
Log.d("Imprime", arrayBusiness.get(i).getName());
}
for (int i = 0; i < arrayBasics.size(); i++)
{
Log.d("Imprime", arrayBasics.get(i).getName());
}
GifTextView loading = (GifTextView)SearchFragment.this.getActivity().findViewById(R.id.loadingSearch);
TextView loadingText = (TextView)SearchFragment.this.getActivity().findViewById(R.id.loadingTextSearch);
loading.setVisibility(View.GONE);
loadingText.setVisibility(View.GONE);
}
});
}
if (pagination_details.isJsonNull()){
Log.d("Paginacion", pagination_details.toString());
}
return data;
}
@Override
public void onHttpCreate(JsonObject response) throws JSONException
{
}
@Override
public void onHttpUnprocessableEntity(JsonObject response) throws JSONException {
this.cancel(true);
final String error = response.get("errors").toString();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getActivity().getApplicationContext(), error, Toast.LENGTH_LONG).show();
}
});
}
}.execute("businesses/search", "GET", "q", "\'"+query+"\'");
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
textView.setText(newText);
return true;
}
});
View searchPlate = (View) searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);
searchPlate.setBackgroundResource(R.mipmap.textfield_custom);
//return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
action(R.string.action_settings);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void action(int resid) {
Toast.makeText(this.getActivity(), getText(resid), Toast.LENGTH_SHORT).show();
}
public static boolean internetConnectionCheck(Activity CurrentActivity) {
Boolean Connected = false;
ConnectivityManager connectivity = (ConnectivityManager) CurrentActivity.getApplicationContext()
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) for (int i = 0; i < info.length; i++)
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
Log.e("My Network is: ", "Connected");
Connected = true;
} else {}
} else {
Log.e("My Network is: ", "Not Connected");
Toast.makeText(CurrentActivity.getApplicationContext(),
"Please Check Your internet connection",
Toast.LENGTH_LONG).show();
Connected = false;
}
return Connected;
}
}