
Como añadir un Searchview aqui?
Publicado por María Jesús (1 intervención) el 08/05/2018 20:44:38
MainActiviry
ProductAvtivity
Row LAyout
Model
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
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


0