Android setAdapter不';不要在碎片上工作

Android setAdapter不';不要在碎片上工作,android,android-fragments,fragment,Android,Android Fragments,Fragment,我目前有一个片段活动,但我无法让我的适配器工作。 在片段活动中,setAdapter行出现错误。 这是我的片段: package com.oneapp.tiradentes; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view

我目前有一个片段活动,但我无法让我的适配器工作。 在片段活动中,setAdapter行出现错误。 这是我的片段:

package com.oneapp.tiradentes;

import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import java.util.ArrayList;

public class FragmentA extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView=inflater.inflate(R.layout.activity_main4,container,false);

    ArrayList<Carro> carros = new ArrayList<Carro>();

    for(int i = 0; i < 5; i++){

        Carro carro = new Carro();
        carro.setModelo("Carro "+(i + 1));
        carro.setMarca("Marca "+(i + 1));

        carros.add(carro);
    }

    ListView lv = (ListView) getView().findViewById(R.id.lv);
    lv.setAdapter(new CarroAdapter(this, carros));

    return rootView;
}
}
拜托,有人能帮我吗

我的适配器: 包com.oneapp.tiradentes

import java.util.ArrayList;

import android.content.Context;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CarroAdapter extends BaseAdapter {
private Context context;
private ArrayList<Carro> lista;

public CarroAdapter(Context context, ArrayList<Carro> lista){
    this.context = context;
    this.lista = lista;
}



@Override
public int getCount() {
    return lista.size();
}

@Override
public Object getItem(int position) {
    return lista.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

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

    Carro carro = lista.get(position);
    View layout;

    if(convertView == null){
LayoutInflater inflater =   (LayoutInflater)  context.getSystemService                  

(Context.LAYOUT_INFLATER_SERVICE); 
layout = inflater.inflate(R.layout.carros, null);
    }
    else{
        layout = convertView;
    }


    TextView modelo = (TextView) layout.findViewById(R.id.t1);
    modelo.setText(carro.getModelo());

    TextView marca = (TextView) layout.findViewById(R.id.t2);
    marca.setText(carro.getMarca());

    ImageView iv = (ImageView) layout.findViewById(R.id.iv);
    iv.setImageResource(carro.getCarroImagem(position));

    if(position % 2 == 0){
        layout.setBackgroundColor(Color.YELLOW);
    }

    return layout;
}

}
import java.util.ArrayList;
导入android.content.Context;
导入android.graphics.Color;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;
公共类CarroAdapter扩展BaseAdapter{
私人语境;
私人ArrayList lista;
公共CarroAdapter(上下文,ArrayList lista){
this.context=上下文;
this.lista=lista;
}
@凌驾
public int getCount(){
返回lista.size();
}
@凌驾
公共对象getItem(int位置){
返回lista.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
Carro Carro=lista.get(位置);
视图布局;
if(convertView==null){
LayoutInflater充气器=(LayoutInflater)context.getSystemService
(上下文、布局、充气机和服务);
布局=充气机。充气(R.layout.carros,空);
}
否则{
布局=转换视图;
}
TextView modelo=(TextView)layout.findviewbyd(R.id.t1);
modelo.setText(carro.getModelo());
TextView marca=(TextView)layout.findviewbyd(R.id.t2);
setText(carro.getMarca());
ImageView iv=(ImageView)布局。findViewById(R.id.iv);
iv.setImageResource(carro.getCarroImagem(职位));
如果(位置%2==0){
布局。背景颜色(颜色。黄色);
}
返回布局;
}
}
错误:

carroAdapter (android.content.Context,       ArrayList<Carro>) in               

CarroAdapter cannot be applied to (com.oneapp.tiradentes.FragmentA ,   

ArrayList<Carro>)
中的carroAdapter(android.content.Context,ArrayList) CarroAdapter无法应用于(com.oneapp.tiradentes.FragmentA, ArrayList) 而不是这个:

ListView lv = (ListView) getView().findViewById(R.id.lv);
尝试使用以下方法:

ListView lv = (ListView) rootView.findViewById(R.id.lv);

因为
getView()
将在方法
onCreateView

之后准备就绪,您的
CarroAdapter
将上下文作为第一个参数,并且您正在从fragment类发送
,这意味着您正在发送
FragmentA
实例。 换成

lv.setAdapter(new CarroAdapter(getActivity(), carros));
另外,请尽量避免将
上下文
作为成员保留在适配器中,因为您在适配器中仅使用上下文

 LayoutInflater inflater =   (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
你可以用

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

在此位置修改代码:

    ListView lv = (ListView) getView().findViewById(R.id.lv);
  lv.setAdapter(new CarroAdapter(getActivity(),carros));

这是因为片段不包含任何上下文;您必须在此处传递活动。

显示什么错误?也发布一些适配器类的代码。我觉得你打电话给构造器的方式不对。
    ListView lv = (ListView) getView().findViewById(R.id.lv);
  lv.setAdapter(new CarroAdapter(getActivity(),carros));