Android - 片段中的适配器问题

时间:2016-08-18 11:08:10

标签: java android fragment adapter

我对android开发相当新,当我尝试在片段中使用适配器时出现错误,我试图在onCreateView

下写下这一行
valueAdapterEn = new ValueAdapterEn(English_list, this);

此错误在本节(English_list, this)

ValueAdapterEn

public class ValueAdapterEn extends BaseAdapter implements Filterable {

private ArrayList<String> English_List;
private ArrayList<String> Filterd_EngList;
private LayoutInflater mInflater;
private ValueFilter valueFilter;

public ValueAdapterEn(ArrayList<String> English_List, Context context){
    this.English_List = English_List;
    this.Filterd_EngList = English_List;
    mInflater = LayoutInflater.from(context);
    getFilter();
}

@Override
public int getCount() {
    return 0;
}

@Override
public Object getItem(int position) {
    return null;
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    return null;
}

@Override
public Filter getFilter() {
    return null;
 }
}

logcat的

Error:(84, 30) error: constructor ValueAdapterEn in class ValueAdapterEn cannot be applied to given types;
required: no arguments
found: ArrayList<String>,TwoFragment
reason: actual and formal argument lists differ in length

问题可能来自'this'

4 个答案:

答案 0 :(得分:2)

您已创建此ValueAdapterEn类,constuctor中没有参数,因为日志消息显示在那里我猜。您如何在class中传递参数。还请发布您的相关信息代码可获得更多帮助,并在深入挖掘某些core-java代码之前先了解android。您可以从thisthis依靠constructor

答案 1 :(得分:1)

你的 ValueAdapterEn 构造函数没有采用上下文:

你必须像下面那样实例化你的上下文;

     public int benchmark(){
        long startTime = System.currentTimeMillis();
        int count=0;
        double aux=0;
        while((System.currentTimeMillis()-startTime)<100){
            count++;
            double d = 7777777777d;
            aux = 0;
            aux=aux+(int)(aux+Math.sin(d)*Math.cos(d));
        }
        return count;
    }

答案 2 :(得分:0)

而不是this您必须通过contextgetActivity()

答案 3 :(得分:0)

我还不允许发表评论,但我认为那里的适配器需要一个上下文,你试图在第二个参数中传递。片段不是有效的上下文。使用getActivity()代替this