gpt4 book ai didi

java - 如何动态更改回收器 View 项?

转载 作者:行者123 更新时间:2023-12-02 09:45:13 25 4
gpt4 key购买 nike

我创建了一个 RecyclerView 来显示我已连接的每个节点。在 RecyclerView 中我添加了两个按钮和一个 TextView。 TextView 将显示节点的当前状态,即节点当前是打开还是关闭。节点通过 MQTT 发送其当前状态,我能够检测应用程序上每个节点的当前状态,但无法根据它更新 TextView。如何更新 TextView?

我尝试过添加新项目并删除前一个项目,但它们都不适合我。我添加了代码来检测状态消息来自哪个节点。

enter image description here

//From this section I am getting details of my all node stored into the database
public void addData()
{
pumpList = new ArrayList<>();

StringRequest stringRequest = new StringRequest(Request.Method.GET, REQUEST_URL,
new Response.Listener<String>()
{
@Override
public void onResponse(String response)
{
try
{
JSONArray pumpData = new JSONArray(response);

for(int i = 0; i < pumpData.length(); i++)
{
JSONObject pump = pumpData.getJSONObject(i);

String name = pump.getString("name");
String device_id = pump.getString("device_id");
String stat = pump.getString("stat");

Log.d("HTTP",String.valueOf(name));
Log.d("HTTP",String.valueOf(device_id));
Log.d("HTTP",String.valueOf(stat));

pumpList.add(new pumpData(name,device_id,stat));
}

pumpAdapter adapter = new pumpAdapter(getActivity(),pumpList);
recyclerView.setAdapter(adapter);
progressDialog.dismiss();
}
catch (JSONException e)
{
e.printStackTrace();
progressDialog.dismiss();
}
}
},
new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error)
{
Toast.makeText(getActivity(),error.getMessage(),Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
}
});
Volley.newRequestQueue(getActivity()).add(stringRequest);
}

//When I get a message over MQTT then I am showing from which device the MQTT Message is Coming from
public void changeDataByFiltering(String MQTT_TOPIC, String MQTT_PAYLOAD)
{
for(pumpData pD: pumpList)
{
insertStringSubscribe INSSUB = new insertStringSubscribe();
String mqtt_topic_from_list = INSSUB.insertString(pD.getDeviceID());
if(mqtt_topic_from_list.trim().toLowerCase().equals(MQTT_TOPIC.trim().toLowerCase()))
[enter image description here][1]{
if(MQTT_PAYLOAD.trim().toLowerCase().equals(payloadON.trim().toLowerCase()))
{
Toast.makeText(mCtx, pD.getName()+": ON",Toast.LENGTH_SHORT).show();
}

if(MQTT_PAYLOAD.trim().toLowerCase().equals(payloadOFF.trim().toLowerCase()))
{
Toast.makeText(mCtx, pD.getName()+": OFF",Toast.LENGTH_SHORT).show();
}
}
}
}

最佳答案

我假设我们有一个List<String> data作为我们的数据源,我们有 rvadapter这是我们的RecyclerView.Adapter 。我们将执行以下操作来更新项目:

data.set(position,"newdata");
rvadapter.notifyItemChanged(position);

此外,您还可以更改项目范围。并插入新项目或删除项目但必须调用 notify... rvadapter中的相关功能但如果您重新创建 data例如:

data = new ...那么你必须使用notifydatasetchanged ;

关于java - 如何动态更改回收器 View 项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56714312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com