Android - Como añadir un Searchview aqui?

 
Vista:
sin imagen de perfil

Como añadir un Searchview aqui?

Publicado por María Jesús (1 intervención) el 08/05/2018 20:44:38
MainActiviry
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
public class MainActivity extends AppCompatActivity {
 
    private final String JSON_URL = "https://raw.githubusercontent.com/davidm1994/covacasa2005/master/jsoncovacasa.json";
    private JsonArrayRequest request;
    private RequestQueue requestQueue;
    private List<Productos> lstProductos;
    private RecyclerView recyclerView;
    private SearchView searchView;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        ActionBar actionBar = getSupportActionBar();
 
 
        lstProductos = new ArrayList<>();
        recyclerView = findViewById(R.id.recylerviewid);
        jsonrequest();
    }
 
    @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, menu);
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        return true;
    }
 
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
 
        //noinspection SimplifiableIfStatement
        if (id == R.id.action_search) {
            return true;
        }
 
        return super.onOptionsItemSelected(item);
    }
 
 
    @Override
    public void onBackPressed() {
        // close search view on back button pressed
        if (!searchView.isIconified()) {
            searchView.setIconified(true);
            return;
        }
        super.onBackPressed();
    }
 
    private void jsonrequest() {
 
        request = new JsonArrayRequest(JSON_URL, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
 
                JSONObject jsonObject = null;
                for (int i = 0; i < response.length(); i++) {
 
                    try {
                        jsonObject = response.getJSONObject(i);
                        Productos productos = new Productos();
                        productos.setName(jsonObject.getString("name"));
                        productos.setDescription(jsonObject.getString("description"));
                        productos.setCodigo(jsonObject.getString("codigo"));
                        productos.setFulldescription(jsonObject.getString("fulldescription"));
                        productos.setImage_url(jsonObject.getString("img"));
                        lstProductos.add(productos);
 
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
 
                setuprecyclerview(lstProductos);
 
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
 
            }
        });
 
        requestQueue = Volley.newRequestQueue(MainActivity.this);
        requestQueue.add(request);
 
    }
 
    private void setuprecyclerview(List<Productos> lstProductos) {
 
        RecyclerViewAdapter myadapter = new RecyclerViewAdapter(this, lstProductos);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
 
        recyclerView.setAdapter(myadapter);
 
    }
 
}



ProductAvtivity
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
public class ProductActivity extends AppCompatActivity {
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_product);
 
        //hide the default actionbar
 
        //getSupportActionBar().hide();
 
        //Recieve data
 
        String name = getIntent().getExtras().getString("product_name");
        String full = getIntent().getExtras().getString("product_full");
        String codigo = getIntent().getExtras().getString("product_codigo");
        String img = getIntent().getExtras().getString("product_img");
 
        //iniView
 
        CollapsingToolbarLayout collapsingToolbarLayout = findViewById(R.id.collapsingtoolbar_id);
        collapsingToolbarLayout.setTitleEnabled(true);
        TextView tv_name = findViewById(R.id.aa_product_name);
        TextView tv_full = findViewById(R.id.aa_fulldescription);
        TextView tv_codigo = findViewById(R.id.aa_codigo);
        ImageView tv_img = findViewById(R.id.aa_thumbnail);
 
        //setting values to each view
        tv_name.setText(name);
        tv_full.setText(full);
        tv_codigo.setText(codigo);
 
        RequestOptions requestOptions = new RequestOptions().centerCrop().placeholder(R.drawable.loading_shape).error(R.drawable.loading_shape);
 
        //set images using glide
        Glide.with(this).load(img).apply(requestOptions).into(tv_img);
 
    }
}

Row LAyout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:padding="8dp"
    android:background="#fff"
    android:id="@+id/container">
 
    <ImageView
        android:layout_width="100dp"
        android:layout_height="150dp"
        android:id="@+id/thumbnail"/>
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="130dp"
        android:orientation="vertical"
        android:layout_margin="8dp">
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/product_name"
            android:text="Nombre de producto"
            android:textStyle="bold"
            android:textSize="18sp"/>
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="16sp"
            android:text="DESCRIPCION"
            android:id="@+id/descripcion"/>
 
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/codigo"
            android:background="@drawable/codigo_background"
            android:text="0659862"
            android:textSize="15sp"/>
 
    </LinearLayout>
 
</LinearLayout>

Model
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public class Productos {
 
    private String name;
    private String description;
    private String codigo;
    private String fulldescription;
    private String image_url;
 
    public Productos() {
    }
 
    public Productos(String name, String description, String codigo, String fulldescription, String image_url) {
        this.name = name;
        this.description = description;
        this.codigo = codigo;
        this.fulldescription = fulldescription;
        this.image_url = image_url;
    }
 
    public String getName() {
        return name;
    }
 
    public String getDescription() {
        return description;
    }
 
    public String getCodigo() {
        return codigo;
    }
 
    public String getFulldescription() {
        return fulldescription;
    }
 
    public String getImage_url() {
        return image_url;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public void setDescription(String description) {
        this.description = description;
    }
 
    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }
 
    public void setFulldescription(String fulldescription) {
        this.fulldescription = fulldescription;
    }
 
    public void setImage_url(String image_url) {
        this.image_url = image_url;
    }
}

Y AQUI ESTA EL ADAPTADOR EL CUAL NO CONSIGO QUE FUNCIONE EL BUSCADOR
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
 
    private Context mContext;
    private List<Productos> mData;
    RequestOptions option;
 
    public RecyclerViewAdapter(Context mContext, List<Productos> mData) {
        this.mContext = mContext;
        this.mData = mData;
 
        //Request option from glide
        option = new RequestOptions().centerCrop().placeholder(R.drawable.loading_shape).error(R.drawable.loading_shape);
    }
 
    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
 
 
        View view;
        LayoutInflater inflater = LayoutInflater.from(mContext);
        view = inflater.inflate(R.layout.productos_row_item,parent,false);
        final MyViewHolder viewHolder = new MyViewHolder(view);
        viewHolder.view_container.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
 
                Intent i = new Intent(mContext, ProductActivity.class);
                i.putExtra("product_name",mData.get(viewHolder.getAdapterPosition()).getName());
                i.putExtra("product_full",mData.get(viewHolder.getAdapterPosition()).getFulldescription());
                i.putExtra("product_codigo",mData.get(viewHolder.getAdapterPosition()).getCodigo());
                i.putExtra("product_img",mData.get(viewHolder.getAdapterPosition()).getImage_url());
 
                mContext.startActivity(i);
            }
        });
 
        return viewHolder;
    }
 
    @Override
    public void onBindViewHolder(MyViewHolder holder, int position) {
 
 
        holder.tv_name.setText(mData.get(position).getName());
        holder.tv_description.setText(mData.get(position).getDescription());
        holder.tv_codigo.setText(mData.get(position).getCodigo());
 
        //IMAGE HOLDER
        Glide.with(mContext).load(mData.get(position).getImage_url()).apply(option).into(holder.img_thumbnail);
    }
 
    @Override
    public int getItemCount() {
        return mData.size();
    }
 
    public static class MyViewHolder extends RecyclerView.ViewHolder{
 
        TextView tv_name;
        TextView tv_description;
        TextView tv_codigo;
        ImageView img_thumbnail;
        LinearLayout view_container;
 
        public MyViewHolder(View itemView) {
            super(itemView);
 
            view_container = itemView.findViewById(R.id.container);
            tv_name = itemView.findViewById(R.id.product_name);
            tv_description = itemView.findViewById(R.id.descripcion);
            tv_codigo = itemView.findViewById(R.id.codigo);
            img_thumbnail = itemView.findViewById(R.id.thumbnail);
        }
    }
 
 
    public Filter getFilter() {
        return new Filter() {
            @Override
            protected FilterResults performFiltering(CharSequence charSequence) {
                String charString = charSequence.toString();
                if (charString.isEmpty()) {
                    mData = mData;
                } else {
                    List<Productos> productosList = new ArrayList<>();
                    for (Productos row : productosList) {
 
                        // name match condition. this might differ depending on your requirement
                        // here we are looking for name or phone number match
                        if (row.getName().toLowerCase().contains(charString.toLowerCase()) || row.getCodigo().contains(charSequence)) {
                            productosList.add(row);
                        }
                    }
 
                    mData = productosList   ;
                }
 
                FilterResults filterResults = new FilterResults();
                filterResults.values = mData;
                return filterResults;
            }
 
            @Override
            protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
                mData = (ArrayList<Productos>) filterResults.values;
 
                // refresh the list with filtered data
                notifyDataSetChanged();
            }
        };
    }
 
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como añadir un Searchview aqui?

Publicado por David (18 intervenciones) el 13/05/2018 02:14:44
El ultimo trazo de codigo es donde esta el "Filter", una ayudita porfavor!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar