java - List<Trail> 无法转换为 Context

标签 java android retrofit

您好,我有以下代码,它使用我使用 Retrofit http 客户端接收到的数据填充 ListView 。

listView = (ListView) findViewById(R.id.list_item_details);


    if (mlabAPi.isEmpty()) {
        Toast.makeText(getApplicationContext(), "Please obtain your API KEY from!", Toast.LENGTH_LONG).show();
        return;
    }


    ApiInterface apiService =
            MlabApiClient.getClient().create(ApiInterface.class);

    Call<List<Trail>> call = apiService.byTrailID(countyString,mlabAPi);
    call.enqueue(new Callback<List<Trail>>() {
        @Override
        public void onResponse(Call<List<Trail>> call, Response<List<Trail>> response) {
            int statusCode = response.code();
            List<Trail> trails = response.body();
            listView.setAdapter(new WalkDetailsAdapter(trails,R.layout.list_item_details, )); **<-HERE**
        }

        @Override
        public void onFailure(Call<List<Trail>> call, Throwable t) {
            // Log error here since request failed
            Log.e(TAG, t.toString());

        }
    });

这给了我错误错误:(127、60)错误:不兼容的类型:无法将列表转换为上下文。

我认为错误是 listView.setAdapter 的第三个参数,有谁知道我必须添加的第三个参数是什么, (我尝试了 getApplicatinonContext,因为那是我在填充 recyclerview 时使用的。)什么是 listview 等价物?

谢谢。

步行细节适配器

   public class WalkDetailsAdapter extends ArrayAdapter<Trail> {

    private Context context;
    private List<Trail> values;

    public WalkDetailsAdapter ( Context context, List<Trail> values){
        super(context, R.layout.list_item_details, values);

        this.context = context;
        this.values = values;

    }

    @Override
    public View getView (int position, View convertView, ViewGroup parent)
    {
        View row = convertView;

        if (row == null)
        {
            LayoutInflater inflater =
                    (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            row = inflater.inflate(R.layout.list_item_details, parent, false);

        }


        TextView textViewName = (TextView) row.findViewById(R.id.name);
        TextView textViewCounty = (TextView) row.findViewById(R.id.county);
        TextView textViewFormat = (TextView) row.findViewById(R.id.format);
        TextView textViewTime = (TextView) row.findViewById(R.id.time);
        TextView textViewLength = (TextView) row.findViewById(R.id.length);
        //TextView textViewGrade = (TextView) row.findViewById(R.id.grade);
        TextView textViewDifficultly = (TextView) row.findViewById(R.id.diffuctlty);
        TextView textViewQuality= (TextView) row.findViewById(R.id.quality);
        TextView textViewStart = (TextView) row.findViewById(R.id.start);
        TextView textViewFinish = (TextView) row.findViewById(R.id.finish);

        Trail item = values.get(position);
        String trail = item.getTrailName();
        textViewName.setText(trail);

        String county = item.getCounty();
        textViewCounty.setText(county);

        String format = item.getFormat();
        textViewFormat.setText(format);

        String time = item.getTime();
        textViewTime.setText(time);

        String length = item.getDistance();
        textViewLength.setText(length);

        String diff = item.getGrade();
        textViewDifficultly.setText(diff);

        String quality = item.getQuality();
        textViewQuality.setText(quality);

        String start = item.getStartTown();
        textViewStart.setText(start);

        String finish = item.getFinishTown();
        textViewFinish.setText(finish);

        return row;



    }

}

最佳答案

只要切换这个

listView.setAdapter(new WalkDetailsAdapter(trails,R.layout.list_item_details, ));

对此

listView.setAdapter(new WalkDetailsAdapter(getApplicationContext(),trails));

问题是在您的 WalkDetailsAdapter 类中,构造函数参数是 Context和一个 List<Trail>你向它提供了列表,然后是布局资源。所以只需切换参数,使第一个是使用 getApplicationContext() 的上下文或 getContext()this取决于类是什么,第二个是 List<Trail> 的实例然后它应该可以工作。

关于java - List<Trail> 无法转换为 Context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49434165/

相关文章:

java - 如何借助 Android 中的 Intent 从自己的应用程序通过 Whatsapp 发送文本消息和图像?

java - 为什么我的 ListView 总是从列表中删除最后一个 View

java - 使用 ArrayAdapter 包含来自 JSON 的图像和文本的 ListView

java - Java 中的静态类有什么用?

java - 尽可能快地清除透明的 BufferedImage

android - 尝试使用 Dagger 刀柄的代码时出现此错误,错误 :[Hilt] java. lang.reflect.InvocationTargetException(无错误消息)

java - 如何使用改造 2 发出 POST 请求?

java - 使用 RoboSpice/Retrofit 和参数化类型进行 JSON 响应

java - 如何访问默认包中的java类?

java - 处理tcp java socket项目中的异常