2016-08-12 39 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); 
     } 
    } 
}