如何在列表视图中打开活动数组类名称



我有 n 个类项目自动生成,就像在窗口中通过 java 一样,我想在我的应用程序中使用这个类,如何在列表视图中按名称打开类活动? 安卓可以通过实现来做到这一点

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>

使用您在适配器中传递的Context并调用context.startActivity(new Intent(context,className))

如果要从适配器中启动Activity,则需要在适配器项目布局文件中的按钮上设置onClickListener()。如果可以选择整个列表项,则可以在活动中实现OnItemClickListener,并启动在单击位置中编制索引的活动,并仅使用startActivity(new Intent(this,CLASSES[i]))其中 i 是单击项的位置。

最新更新