编辑:为了让这个问题不那么令人不快,我一直在努力解决这个问题,并且现在有一些东西要实际展示。我完全删除了所有以前的内容,并完全重写了我的问题。
我的最终目标是拥有一个包含多个按钮的 MainActivity 屏幕,每个按钮执行不同的操作。两个示例按钮是 1) 查看设备构建信息,以及 2) 查看已安装的应用程序。单击按钮时,我希望 Activity 切换到 RecyclerView 并显示该信息。用户应该能够按下后退按钮并单击另一个按钮。
我相信我已经准备好结构,但无法弄清楚如何集成功能来读取包。对于这个事实,我将在哪里创建函数本身以及如何传递结果以在 RecyclerView 中查看?
这是“MainActivity.java”:
package com.emil.proofofconcepts.anothergo;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
//Variables
private TextView mTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initRecyclerView();
}
private void initRecyclerView() {
RecyclerView recyclerView = findViewById(R.id.recycler_view);
RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, mTv);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
}
这是我的“RecyclerViewAdapter.java”:
package com.emil.proofofconcepts.anothergo;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import org.w3c.dom.Text;
import java.util.ArrayList;
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{
private static final String TAG = "RecyclerViewAdapter";
private TextView mTv;
private Context mContext;
public RecyclerViewAdapter(Context context, TextView mTv) {
mTv = mTv;
mContext = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_list, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Log.d(TAG, "onBindViewHolder: called.");
//holder.tv.setText("what");
holder.tv.setText(readPackages());
}
@Override
public int getItemCount() {
return 1;
}
public class ViewHolder extends RecyclerView.ViewHolder {
TextView tv;
RelativeLayout parentLayout;
public ViewHolder(@NonNull View itemView) {
super(itemView);
tv = itemView.findViewById(R.id.tv_display);
parentLayout = itemView.findViewById(R.id.parent_layout);
}
}
private String readPackages() {
PackageManager pm = getPackageManager();
String ret = "";
for (ApplicationInfo app : pm.getInstalledApplications(0)){
if(app.className != null && !app.className.equals("Null")){
if(!ret.equals("")) ret = ret + "\n";
ret = ret + app.className;
}
}
return ret;
}
}
这是我的“layout_list.xml”:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:id="@+id/parent_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_display"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sample Text"/>
</RelativeLayout>
最后但同样重要的是,这是我的“activity_main.xml”:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
</androidx.recyclerview.widget.RecyclerView>
</RelativeLayout>