2016-08-12 82 views
2

我想用简单的字符串数据填充RecyclerView,但recyclerView.setAdapter(adapter);给出错误。有什么问题?recyclerView.setAdapter不接受ArrayAdapter

我是新来的recyclerview。

RecyclerView recyclerView; 
String []data = {"ankush", "kapoor"}; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    recyclerView = (RecyclerView) findViewById(R.id.myRecyclerView); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data); 
    recyclerView.setLayoutManager(new LinearLayoutManager(this)); 
    recyclerView.setAdapter(adapter); 
} 
+6

ArrayAdapter是“ListView”的适配器。对于'RecyclerView',你必须使用'RecyclerView.Adapter' – Budius

+1

“给出错误” - 是的,应该说参数类型不正确,它应该告诉你什么是预期的。你使用什么资源来学习RecyclerView? –

回答

4

您必须为RecyclerView创建自定义Adapter类。下面是RecyclerView自定义适配器类的示例:

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder>{ 

private LayoutInflater inflater; 
private Context context; 
<your string array list> 

public CustomAdapter(Context context,<your string arraylist>) { 
    inflater = LayoutInflater.from(context); 
    this.context = context; 
    this.<your string arraylist>=<your string arraylist>; 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = inflater.inflate(R.layout.custom_layout, parent, false); 
    MyViewHolder holder = new MyViewHolder(view); 
    return holder; 
} 

@Override 
public void onBindViewHolder(MyViewHolder holder, int position) { 
     holder.serial_number.setText(<your string array[position]>); 
} 

@Override 
public int getItemCount() { 
    return <size of your string array list>; 
} 

class MyViewHolder extends RecyclerView.ViewHolder 
{ 
    TextView serial_number; 

    public MyViewHolder(View itemView) { 
     super(itemView); 
     serial_number = (TextView)itemView.findViewById(R.id.serialNo_CL); 
     } 
    } 
}