不能在响应中使用适配器



我正在尝试在onResponse请求中使用适配器,但是当我必须将上下文传递给适配器时,我遇到了一些问题。

这是错误:

CodiciAdapter 中的 CodiciAdapter(( 不能应用于:预期 参数:实际参数:上下文:android.content.上下文 这(匿名。编码>>(项: .java。。Codici> R.layout.activity_listview (int( 响应(Java.科迪奇>(

这是我的要求:

Override
        public void onResponse(List<Codici> response) {

            //ArrayAdapter adapter = new ArrayAdapter<String>(this,
             //       R.layout.activity_listview, mobileArray);
            ListView listView = (ListView) findViewById(R.id.codici_list);

            CodiciAdapter codiciAdapter = new CodiciAdapter(this, R.layout.activity_listview, response); //what should I use instead of this??
            listView.setAdapter(codiciAdapter);
        }

这是我的适配器:

public class CodiciAdapter extends BaseAdapter {
private Context context;
private final List<Codici> items;
public CodiciAdapter(Context context, List<Codici> items) {
    this.context = context;
    this.items = items;
}
@Override
public int getCount() {
    return this.items.size();
}
@Override
public Codici getItem(int position) {
    return this.items.get(position);
}
@Override
public long getItemId(int position) {
    return this.items.get(position).hashCode();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    final Codici item = getItem(position);
    LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if(convertView == null) {
        // If convertView is null we have to inflate a new layout
        convertView = inflater.inflate(R.layout.activity_listview, null);
        final CodiciViewHolder viewHolder = new CodiciViewHolder();
        viewHolder.name = (TextView) convertView.findViewById(R.id.name);
        // We set the view holder as tag of the convertView so we can access the view holder later on.
        convertView.setTag(viewHolder);
    }
    // Retrieve the view holder from the convertView
    final CodiciViewHolder viewHolder = (CodiciViewHolder) convertView.getTag();
    // Bind the values to the views
    viewHolder.name.setText(item.getName());
    return convertView;
}

}

CodiciAdapter的第一个参数是ContextSee CodiciAdapter(Context context, List<Codici> items) .

因此,当您在内部类中使用thisthis将指向当前类而不是外部类。

解决方案是,如果此类是 活动 . 然后使用以下代码并删除额外的参数 R.layout.activity_listview

Override
public void onResponse(List<Codici> response) {
    ListView listView = (ListView) findViewById(R.id.codici_list);
    CodiciAdapter codiciAdapter = new CodiciAdapter(YourActivityName.this, response); 
    listView.setAdapter(codiciAdapter);
}

或者在其他情况下,您需要提供Context

只需从构造函数中删除布局文件

CodiciAdapter codiciAdapter = new CodiciAdapter(this,response);

最新更新