有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在构造函数中传递的java上下文显示错误

我是安卓开发的初学者。我试着制作定制的阵列适配器来显示一些东西。 但当我从主活动传递参数时,它在上下文中显示了一个错误 与所需的类型上下文和提供的主要活动类似

这是我的第一个问题,朋友们,请帮帮我。
主要活动。java

package com.example.myapplication;

import 安卓x.appcompat.app.AppCompatActivity;

import 安卓.os.Bundle;
import 安卓.widget.ListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ArrayList<text> arr= new ArrayList<>();
        arr.add(new text(4,5));
        textadapter extadapter=new textadapter(this,arr);
        ListView listView=findViewById(R.id.list_item);
        listView.setAdapter(extadapter);

    }
}

定制阵列适配器

 public class textadapter extends ArrayAdapter {


    public textadapter(@NonNull Context context,ArrayList<text> arrayList) {
        super(context,0,arrayList);
    }

    @NonNull
    @Override
    public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        if(convertView==null){
            convertView= LayoutInflater.from(getContext()).inflate(R.layout.list,parent,false);
        }
        text a= (text) getItem(position);
        TextView t=convertView.findViewById(R.id.text);
        TextView T1=convertView.findViewById(R.id.text2);
        t.setText(a.getText());
        T1.setText(a.getStext());
        return convertView;
    }
}

共 (1) 个答案

  1. # 1 楼答案

    将TextAdapter类中getView()方法中的getContext()更改为context,并生成一个名为mContext的变量,因为您已经将主活动上下文传递给适配器构造函数

    public class textadapter extends ArrayAdapter {
        private Context context;
    
       public textadapter(@NonNull Context context,ArrayList<text> arrayList) {
          super(context,arrayList);
          this.context = context;
       }
    
      @NonNull
      @Override
      public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        if(convertView==null){
            convertView= LayoutInflater.from(context).inflate(R.layout.list,parent,false);
        }
        text a= (text) getItem(position);
        TextView t=convertView.findViewById(R.id.text);
        TextView T1=convertView.findViewById(R.id.text2);
        t.setText(a.getText());
        T1.setText(a.getStext());
        return convertView;
    }