java - 无法解析我用来初始化适配器的方法 'getActivity()'

标签 java android list android-listview android-arrayadapter

我正在创建自定义适配器 MyAdapter 并扩充 ListView listView 以显示字符串数组 data。使用 getActivity() 方法初始化 MyAdapter 时出现错误,如下所示:

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private String[] data = {"Sanskrit", "Bhojpuri", "Newari", "Magar",
            "Gurung", "English", "Maithili", "Tamil", "Hindi",
            "French", "German", "Russian", "Chinese"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.list_view);

        MyAdapter adapter = new MyAdapter(getActivity(), data);
        listView.setAdapter(adapter);
    }
}

class MyAdapter extends ArrayAdapter {
    String[] data;

    public MyAdapter(Context context, int res, String[] data) {
        super(context,res);

        this.data = data;
    }

    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) getContext().
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View row = inflater.inflate(R.layout.custom_list_view, parent, false);

        TextView textView = row.findViewById(R.id.textView);

        textView.setText(data[position]);
        return row;
    }
}

如有任何帮助,我们将不胜感激。

最佳答案

当您初始化 MyAdapter 时,您已经在 Activity 中。 Activity 类没有 getActivity() 方法,因为它已经是 Activity。

使用这个:

MyAdapter adapter = new MyAdapter(this, data);

关于java - 无法解析我用来初始化适配器的方法 'getActivity()',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53227902/

相关文章:

android - 如何按 Intent 使用内置均衡器

android - 似乎您的设备不支持Nexus手机上的摄像头

list - 如何获得列表的反向对?

c# - 每个键包含多个值的列表

java - 如何将 facebook post created_time 转换为用户的时区?

java - 从 shell 编译和执行 Java 应用程序的约定?

java - 使用数组打印蛇图案

java - 用于测试的 Maven 配置文件

java - 使用 android 发布数据时出错

这段代码可以优化吗?