gpt4 book ai didi

java - 在android中使用socket.io时如何在运行时获取 View ?

转载 作者:太空宇宙 更新时间:2023-11-04 01:34:07 26 4
gpt4 key购买 nike

我在前端有一个 android 应用程序,在后端有一个 Node js 套接字。

有一个 Activity 中的聊天列表,我从 socket.on 事件中获取它们。

此列表中的每个项目都有一个自定义 View ,当收到套接字事件时,我需要使用不同的值更新此自定义 View 。

我怎样才能做到这一点?

这是我获取聊天列表时的代码:

final Handler mHandler04 = new Handler(Looper.getMainLooper());
mHandler04.post(new Runnable() {
@Override
public void run() {
SocketManager.getInstance().getSocket().on("allchatres", new Emitter.Listener() {
@Override
public void call(final Object... args) {
g.context.runOnUiThread(new Runnable() {
@Override
public void run() {
JSONArray jsonArray = (JSONArray) args[0];
Log.d(TAG, "run: " + jsonArray);
try {
for (int i = 0; i < jsonArray.length(); i++) {
createView(jsonArray.getJSONObject(i).getString("title"), jsonArray.getJSONObject(i).getString("body"));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}
});
}
});

这是我的 Createview 代码:

private void createView(final String title, final String body) {
customViewChat = new customViewChat(g.context);
layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
customViewChat.txtCsTitle.setText(title);
customViewChat.txtCsBody.setText(body);
LinearLayoutItemHolder.addView(customViewChat, layoutParams);
customViewChat.btnJoin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(g.context, DetailActivity.class);
i.putExtra("title", title);
i.putExtra("body", body);
startActivity(i);
}
});
}

但是当我想像这样更新列表中的自定义 View 时:

int count = LinearLayoutItemHolder.getChildCount() ;
Log.d(TAG,"child count : " + count) ;
for(int i = 0 ;i<count ; i++)
{
View v = LinearLayoutItemHolder.getChildAt(i) ;

}

我在 logcat 中看到以下结果:

child count : 0

如何获取 LinearLayoutItemHolder 中的每个自定义 View ?

我想在另一个 socket.on 事件中更改 customView 值,但我不能。

我搜索了很多,但没有找到任何有用的东西。

任何建议都会有帮助。

最佳答案

最后,我找到了实现目标的最佳方法:使用 RecyclerView!

我在使用自定义 View 时遇到了一些困难,因此我使用了回收器 View 。

关于java - 在android中使用socket.io时如何在运行时获取 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55085620/

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