java - 我如何在列表视图中打开活动数组类名
问题描述
我有 n 类项目自动生成,如窗口中的 java 我想在我的应用程序中使用这个类,我如何在列表视图中按名称打开类活动?android 可以通过工具来实现
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private static final Class[] CLASSES = new Class[]{
a.class,
a1.class,
a2.class,
a3.class,
a4.class,
a5.class,
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = findViewById(R.id.list_view);
MyArrayAdapter adapter = new MyArrayAdapter(this, android.R.layout.simple_list_item_1, CLASSES);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
}
}
解决方案
是的很容易
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {
private static final Class[] CLASSES = new Class[]{
a.class,
a1.class,
a2.class,
a3.class,
a4.class,
a5.class
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = findViewById(R.id.list_view);
MyArrayAdapter adapter = new MyArrayAdapter(this, android.R.layout.simple_list_item_1, CLASSES);
listView.setAdapter(adapter);
listView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Class clicked = CLASSES[position];
startActivity(new Intent(this, clicked));
}
private static class MyArrayAdapter extends ArrayAdapter<Class> {
private Context mContext;
private Class[] mClasses;
private MyArrayAdapter(Context context, int resource, Class[] objects) {
super(context, resource, objects);
mContext = context;
mClasses = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(android.R.layout.simple_list_item_1, null);
}
((TextView) view.findViewById(android.R.id.text1)).setText(mClasses[position].getSimpleName());
return view;
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
style="@style/CustomRelativeLayout"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/logo"
style="@style/CustomLogoImageView"
android:contentDescription="@string/app_name"/>
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/logo"
android:scrollbars="none"/>
</RelativeLayout>
推荐阅读
- wordpress - Wordpress 菜单有错误的锚链接
- computer-vision - 有没有办法解决有偏差(损坏)数据集的问题?
- twitter-bootstrap - Thymeleaf - 在工具提示上获取动态内容
- python - 如何将两个python代码粘合(缝合)在一起?
- mongodb - 多面体查询中的地理并限制每个面的结果
- ios - 将新创建的视图链接到情节提要中的视图控制器类时遇到问题
- vue.js - 如何在 vuejs 中使用 axios 显示带有令牌的图像
- r - 在 R 中使用 doParallel 的 foreach 时,Windows Defender 的 CPU 使用率非常高
- class - Is it redundant to make final variables private in dart?
- laravel - 如何在 Laravel 中隐藏颜色/大小元素