Я начинаю разработку Android. Я создаю приложение, в котором есть recycleView с CardView. внутри cardview Я использую одну кнопку TextView и One Switch. когда я меняю значение кнопки на сервер, там он обновляется.Как обновить класс Viewholder после ответа волейбола
Я хочу знать, как обновить класс ViewHolder для каждого ответа на залп. потому что если ViewHolder не обновляется nextTime, значение не изменится на сервере, но кнопка переключения изменит сторону.
MainClass.java
public class Light extends Fragment {
public static final String light_url = "http://192.168.0.7:8080/bizzonthego/Android/device_status.php";
private List<ItemList> LightList;
private RecyclerView recyclerView;
private RecyclerView.LayoutManager layoutManager;
private RecyclerView.Adapter adapter;
View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = inflater.inflate(R.layout.light, container, false);
recyclerView = (RecyclerView) v.findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
LightList = new ArrayList<>();
new Handler().postAtTime(new Runnable() {
@Override
public void run() {
getData();
}
}, 1000);
return v;
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
// new Handler().postDelayed(new Runnable() {
// @Override
// public void run() {
//
// getData();
//
// }
// }, 1000);
}
private void getData()
{
final ProgressDialog loading = ProgressDialog.show(getActivity(), "Loading Data", "Please wait...", false, false);
JsonArrayRequest jsonArrayRequest =new JsonArrayRequest(light_url, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
loading.dismiss();
parseData(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
loading.dismiss();
Toast.makeText(getActivity(),"error to connect",Toast.LENGTH_SHORT).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
//Adding request to the queue
requestQueue.add(jsonArrayRequest);
}
private void parseData(JSONArray array){
for(int i = 0; i<array.length(); i++) {
ItemList lightValue = new ItemList();
JSONObject json = null;
try {
json = array.getJSONObject(i);
String battery = json.getString("device");
String status = json.getString("status");
lightValue.setItem(battery);
lightValue.setStatus(status);
} catch (JSONException e) {
e.printStackTrace();
}
LightList.add(lightValue);
}
//Finally initializing our adapter
adapter = new CardView(LightList,getActivity());
adapter.notifyDataSetChanged();
//Adding adapter to recyclerview
recyclerView.setAdapter(adapter);
}
}
ViewHolder.java
public class CardView extends RecyclerView.Adapter<CardView.ViewHolder>{
List<ItemList> items;
private Context context;
public static final String POST_SWITCH_URL = "http://192.168.0.7:8080/bizzonthego/Android/device_control.php";
public CardView(List<ItemList> item, Context context){
super();
// items = new ArrayList<ItemList>();
// ItemList item = new ItemList();
// item.setItem(names);
//
// items.add(item);
this.items = item;
this.context =context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.permisies_cardview, parent, false);
ViewHolder viewHolder = new ViewHolder(v);
return viewHolder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
final ItemList list = items.get(position);
holder.textViewName.setText(list.getItem());
final String device = list.getItem();
if(list.getStatus().equals("0"))
{
holder.mySwitch.setChecked(false);
holder.mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
StringRequest stringRequest = new StringRequest(Request.Method.POST,POST_SWITCH_URL ,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
Toast.makeText(context, s, Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//Showing toast
Toast.makeText(context, "error to connect", Toast.LENGTH_LONG).show();
}
}) {
@Override
protected java.util.Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new Hashtable<String, String>();
final String control = "1";
params.put("device",device);
params.put("control",control);
return params;
}
};
//Creating a Request Queue
RequestQueue requestQueue = Volley.newRequestQueue(context);
//Adding request to the queue
requestQueue.add(stringRequest);
}
});
} else if(list.getStatus().equals("1"))
{
holder.mySwitch.setChecked(true);
holder.mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
StringRequest stringRequest = new StringRequest(Request.Method.POST,POST_SWITCH_URL ,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
Toast.makeText(context, s, Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//Showing toast
Toast.makeText(context, "error to connect", Toast.LENGTH_LONG).show();
}
}) {
@Override
protected java.util.Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new Hashtable<String, String>();
final String control = "0";
params.put("device",device);
params.put("control",control);
return params;
}
};
//Creating a Request Queue
RequestQueue requestQueue = Volley.newRequestQueue(context);
//Adding request to the queue
requestQueue.add(stringRequest);
}
});
}
}
@Override
public int getItemCount() {
return items.size();
}
class ViewHolder extends RecyclerView.ViewHolder{
public TextView textViewName;
public SwitchCompat mySwitch;
public ViewHolder(View itemView) {
super(itemView);
textViewName = (TextView) itemView.findViewById(R.id.textViewName);
mySwitch = (SwitchCompat) itemView.findViewById(R.id.switchbtn);
}
}
}