Android - 片段中的适配器问题

Posted

技术标签:

【中文标题】Android - 片段中的适配器问题【英文标题】:Android - Adapters in fragments issue 【发布时间】:2016-12-25 07:01:12 【问题描述】:

我是 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”上

【问题讨论】:

您是否创建了 ValueAdapterEn @AparajitaSinha 是的,我当然有 请分享您的 LogCat 消息错误 请贴出ValueAdapterEn的构造函数 参数可能与构造函数不匹配 【参考方案1】:

您已经在constuctor 中创建了这个没有参数的ValueAdapterEn 类,因为我猜日志消息在那里显示。您如何在class 中传递参数。请同时发布您的相关代码以获得更多帮助和在深入挖掘一些android 代码之前先学习core-java。您可以从this 和this 了解constructor

【讨论】:

这个。我只是想知道他如何在 IDE 编辑器中没有出错 我添加了构造函数【参考方案2】:

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

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

  public class ValueAdapterEn extends BaseAdapter implements Filterable 
  private Context context;
     public ValueAdapterEn(ArrayList<String> English_List, Context context)
             this.context = context ;
   
   ......

  

【讨论】:

我添加了构造函数 在这部分“this.context = context”我有无法解析符号错误 能否请您提供整个 LogCat 错误【参考方案3】:

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

【讨论】:

我添加了 LogCat,请花点时间查看它,我尝试了 getActivity() 但它不起作用 我认为您没有使用这些参数声明构造函数 请不要发布猜测作为答案。 我添加了构造函数【参考方案4】:

我还不允许发表评论,但我猜那里的适配器需要一个上下文,您正试图将它传递给第二个参数。片段不是有效的上下文。使用getActivity() 而不是this

【讨论】:

我添加了 LogCat,请花点时间查看它,我尝试了 getActivity() 但它不起作用 我看过了。看起来您的实例化参数太多或太少。我可以看看你的构造函数吗? 请不要发布猜测作为答案。 正如我所说的我不熟悉这些词,请原谅我的无知,但究竟什么是构造函数?? 如果您发布随机想法,您将无济于事(除了已经发布了相同答案的事实)。要给出正确的答案,等到你确定你所说的能解决问题

以上是关于Android - 片段中的适配器问题的主要内容,如果未能解决你的问题,请参考以下文章

片段中gridview的Android文本和图像适配器

片段中ListView的android自定义适配器

Android - 片段中的 setAdapter [重复]

从适配器中的片段调用元素

从自定义适配器获取片段中的 UI 元素 ID

通过适配器在片段之间传递数据(Kotlin Android)