我对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'
答案 0 :(得分:2)
您已创建此ValueAdapterEn
类,constuctor
中没有参数,因为日志消息显示在那里我猜。您如何在class
中传递参数。还请发布您的相关信息代码可获得更多帮助,并在深入挖掘某些core-java
代码之前先了解android
。您可以从this和this依靠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
您必须通过context
或getActivity()
答案 3 :(得分:0)
我还不允许发表评论,但我认为那里的适配器需要一个上下文,你试图在第二个参数中传递。片段不是有效的上下文。使用getActivity()
代替this
。