Answer the question
In order to leave comments, you need to log in
android retrofit how to connect search bar?
unable to connect search to
mainactivity
package com.example.mikhailzagrebaev.myapplication;
import android.content.Intent;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.SearchView;
import android.widget.Toast;
import com.example.mikhailzagrebaev.myapplication.Models.PostModel;
import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class MainActivity extends AppCompatActivity implements SearchView.OnQueryTextListener {
RecyclerView recyclerView;
private List<PostModel> posts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
posts = new ArrayList<>();
recyclerView = (RecyclerView) findViewById(R.id.posts_recycle_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
PostsAdapter adapter = new PostsAdapter(posts);
recyclerView.setAdapter(adapter);
App.getApi().getData(244).enqueue(new Callback<List<PostModel>>() {
@Override
public void onResponse(Call<List<PostModel>> call, Response<List<PostModel>> response) {
posts.addAll(response.body());
recyclerView.getAdapter().notifyDataSetChanged();
}
@Override
public void onFailure(Call<List<PostModel>> call, Throwable t) {
Toast.makeText(getApplicationContext(),t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_search, menu);
MenuItem searchItem = menu.findItem(R.id.search);
SearchView searchView = (SearchView)
searchItem.getActionView();
searchView.setOnQueryTextListener(this);
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
}
import android.os.Build;
import android.support.v7.widget.RecyclerView;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.mikhailzagrebaev.myapplication.Models.PostModel;
import com.example.mikhailzagrebaev.myapplication.Models.Row;
import java.util.List;
public class PostsAdapter extends RecyclerView.Adapter<PostsAdapter.ViewHolder> {
private List<PostModel> posts;
public PostsAdapter(List<PostModel> posts) {
this.posts = posts;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_item, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
PostModel post = posts.get(position);
Row row =post.getRow();
holder.post.setText(("Адрес: " + (String.valueOf(row.getAddress()))+
"\nТип парковки: " +
(String.valueOf(row.getType())) +
"\nМетро: "+ (String.valueOf(row.getNearestSubwayStation()))+
"\nКол-во мест: "+
(String.valueOf(row.getParkingSpace()))
));
}
@Override
public int getItemCount() {
if (posts == null)
return 0;
return posts.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView post;
public ViewHolder(View itemView) {
super(itemView);
post = (TextView) itemView.findViewById(R.id.postitem_post);
}
}
}
java.lang.ClassCastException: android.support.v7.widget.SearchView cannot be cast to android.widget.SearchView
at com.example.mikhailzagrebaev.myapplication.MainActivity.onCreateOptionsMenu(MainActivity.java:63)
at android.app.Activity.onCreatePanelMenu(Activity.java:3294)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:364)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:93)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:332)
at android.support.v7.app.AppCompatDelegateImplV9.preparePanel(AppCompatDelegateImplV9.java:1377)
at android.support.v7.app.AppCompatDelegateImplV9.doInvalidatePanelMenu(AppCompatDelegateImplV9.java:1657)
at android.support.v7.app.AppCompatDelegateImplV9$1.run(AppCompatDelegateImplV9.java:134)
Answer the question
In order to leave comments, you need to log in
Change this:
import android.widget.SearchView;
to this:
import android.support.v7.widget.SearchView;
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question