java - 如何在一个 Activity 中显示多个 RecyclerView 的更简单的表达式
问题描述
我正在尝试在每个 RecyclerView 中将多个 RecyclerView 除以 TextView,这段代码对我有用,但我想让代码更简单。有人可以帮我解决这个问题吗?
这是我的 Activity.java:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
((MainActivity) getActivity()).setActionBarTitle("Tuntunan Toharoh");
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_home, container, false);
//=============================================================
mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
mRecyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(layoutManager);
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), LinearLayoutManager.VERTICAL));
RecyclerView.Adapter tadapter = new RecyclerViewAdapter(getActivity(), mRecyclerViewItems);
mRecyclerView.setAdapter(tadapter);
addMenuItemsFromJson();
mRecyclerView.setNestedScrollingEnabled(false);
//=========================================================
DzRecyclerView2 = (RecyclerView) view.findViewById(R.id.recycler_submenu);
DzRecyclerView2.setHasFixedSize(true);
RecyclerView.LayoutManager zlayoutManager = new LinearLayoutManager(getActivity());
DzRecyclerView2.setLayoutManager(zlayoutManager);
RecyclerView.Adapter zadapter = new RecyclerViewAdapter(getActivity(), mRecyclerViewItems2);
DzRecyclerView2.setAdapter(zadapter);
addMenuItemsFromJson2();
DzRecyclerView2.setNestedScrollingEnabled(false);
//=========================================================
DzaRecyclerView3 = (RecyclerView) view.findViewById(R.id.recycler_mandi);
DzaRecyclerView3.setHasFixedSize(true);
RecyclerView.LayoutManager zzlayoutManager = new LinearLayoutManager(getActivity());
DzaRecyclerView3.setLayoutManager(zzlayoutManager);
RecyclerView.Adapter ziadapter = new RecyclerViewAdapter(getActivity(), mRecyclerViewItems3);
DzaRecyclerView3.setAdapter(ziadapter);
addMenuItemsFromJson3();
DzaRecyclerView3.setNestedScrollingEnabled(false);
//=========================================================
return view;
private void addMenuItemsFromJson() {
try {
String jsonDataString = readJsonDataFromFile();
JSONArray menuItemsJsonArray = new JSONArray(jsonDataString);
for (int i = 0; i < menuItemsJsonArray.length(); ++i) {
JSONObject menuItemObject = menuItemsJsonArray.getJSONObject(i);
String menuItemtitle = menuItemObject.getString("title");
String menuItemContent = menuItemObject.getString("content");
DafAdapter dafa = new DafAdapter(menuItemtitle, menuItemContent);
mRecyclerViewItems.add(dafa);
}
} catch (IOException | JSONException exception) {
Log.e(MainActivity.class.getName(), "Unable to parse JSON file.", exception);
}
}
private String readJsonDataFromFile() throws IOException {
InputStream inputStream = null;
StringBuilder builder = new StringBuilder();
try {
String jsonDataString = null;
inputStream = getResources().openRawResource(R.raw.tayamum);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream, "UTF-8"));
while ((jsonDataString = bufferedReader.readLine()) != null) {
builder.append(jsonDataString);
}
} finally {
if (inputStream != null) {
inputStream.close();
}
}
return new String(builder);
}
private void addMenuItemsFromJson2() {
try {
String jsonDataString = readJsonDataFromFile2();
JSONArray menuItemsJsonArray = new JSONArray(jsonDataString);
for (int i = 0; i < menuItemsJsonArray.length(); ++i) {
JSONObject menuItemObject = menuItemsJsonArray.getJSONObject(i);
String menuItemtitle = menuItemObject.getString("title");
String menuItemContent = menuItemObject.getString("content");
DafAdapter dafa = new DafAdapter(menuItemtitle, menuItemContent);
mRecyclerViewItems2.add(dafa);
}
} catch (IOException | JSONException exception) {
Log.e(MainActivity.class.getName(), "Unable to parse JSON file.", exception);
}
}
private String readJsonDataFromFile2() throws IOException {
InputStream inputStream = null;
StringBuilder builder = new StringBuilder();
try {
String jsonDataString = null;
inputStream = getResources().openRawResource(R.raw.wudhu);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream, "UTF-8"));
while ((jsonDataString = bufferedReader.readLine()) != null) {
builder.append(jsonDataString);
}
} finally {
if (inputStream != null) {
inputStream.close();
}
}
return new String(builder);
}
private void addMenuItemsFromJson3() {
try {
String jsonDataString = readJsonDataFromFile3();
JSONArray menuItemsJsonArray = new JSONArray(jsonDataString);
for (int i = 0; i < menuItemsJsonArray.length(); ++i) {
JSONObject menuItemObject = menuItemsJsonArray.getJSONObject(i);
String menuItemtitle = menuItemObject.getString("title");
String menuItemContent = menuItemObject.getString("content");
DafAdapter dafa = new DafAdapter(menuItemtitle, menuItemContent);
mRecyclerViewItems3.add(dafa);
}
} catch (IOException | JSONException exception) {
Log.e(MainActivity.class.getName(), "Unable to parse JSON file.", exception);
}
}
private String readJsonDataFromFile3() throws IOException {
InputStream inputStream = null;
StringBuilder builder = new StringBuilder();
try {
String jsonDataString = null;
inputStream = getResources().openRawResource(R.raw.mandi);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(inputStream, "UTF-8"));
while ((jsonDataString = bufferedReader.readLine()) != null) {
builder.append(jsonDataString);
}
} finally {
if (inputStream != null) {
inputStream.close();
}
}
return new String(builder);
}
如果我想添加一个或多个 RecyclerView,它只是做一个类似的表达式,只需将表达式 1 更改为其他表达式。我认为它可以比那个代码更简单。
我尝试了 switch 和 if 块,但我没有任何运气。我该怎么做?
解决方案
为什么不把 RecyclerViews 和 TextViews 的列表放在一个垂直的 Recyclerview 中
所以你可以动态绑定它们
编辑
为了创建一个垂直回收器视图,您应该首先查看是否可以将所有行数据包装在一个单一的List
或不?
因此,如果可能的话,剩下的就是创建一个垂直LayoutManager
来显示你的行。类似于 :new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false)
并从那里将其分配给您的 new RecyclerView
,剩下的就是创建ViewHolders
它们并将它们与数据绑定。这很简单。
您可以查看此示例项目以更好地理解
推荐阅读
- javascript - 使用 jsfuck 约定以流方式调用数组的方法
- django - 我如何覆盖用户保存 Django allauth.socialaccounts
- c++ - opreport 似乎报告了错误的模板实例化
- java - Android 尝试使用资源未找到方法 close()
- tomcat - Lucee IIS10 - Tomcat 8.5 BonCodeAJP 连接器 - 通用连接器通信错误
- php - 为什么我在循环中的帖子占据了整个屏幕的宽度?
- java - 迭代器如何在 LinkedList 上工作?
- reactjs - 试图通过数组做出反应
- html - 添加边距时 div 超出父 div
- azure-data-factory - ADF CDM 源转换未读取数据