[英]RecyclerView onBind, not binding the data
我在這里遇到問題。 在綁定數據時,不能使用公共對象。 我應該做一個從其他類獲取數據並將文本設置為XML的類。
public class EventsAdapter extends
RecyclerView.Adapter<RecyclerView.ViewHolder>{
private List<LauncherActivity.ListItem> listItems;
private Context context;
public EventsAdapter(List<LauncherActivity.ListItem> listItems, Context context) {
this.listItems = listItems;
this.context = context;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.event_list, parent, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
LauncherActivity.ListItem listItem = listItems.get(position);
holder.
}
@Override
public int getItemCount() {
return listItems.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView textHeading = null;
public TextView textDescription = null;
public ViewHolder(View itemView) {
super(itemView);
textHeading = (TextView)itemView.findViewById(R.id.viewHead);
textDescription = (TextView)itemView.findViewById(R.id.viewDesc);
}
}
}
由於您在onBind方法中使用RecyclerView.ViewHolder
,因此無法解決。 使用您的自定義EventsAdapter.ViewHolder
類來解析變量。 例如:
public void onBindViewHolder(EventsAdapter.ViewHolder holder, int position) {
}
嘗試為此進行擴展。。RecyclerView.Adapter <“ EventsAdapter.ViewHolder”>當然不帶“”
讓你的EventsAdapter
延長RecyclerView.Adapter<EventsAdapter.MyViewholder>
然后再實現方法和構造,因此你onBindViewHolder
將創建EventsAdapter.ViewHolder holder
本身。
希望這可以幫助..
您沒有使用ViewHolder,這就是為什么無法使用方法的原因
改變這個:
public class EventsAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
對此:
public class EventsAdapter extends RecyclerView.Adapter<ViewHolder> //your ViewHolder
您的onBindViewHolder會像這樣
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
LauncherActivity.ListItem listItem = listItems.get(position);
}
有兩種方法可以做到這一點 :
使您的EventsAdapter擴展RecyclerView.Adapter
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
LauncherActivity.ListItem listItem = listItems.get(position);
holder.textHeading.setText(....)
}
要么
在類型轉換的幫助下
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
LauncherActivity.ListItem listItem = listItems.get(position);
((ViewHolder)holder).textHeading.setText(....)
}
而且你很好。 :)快樂編碼:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.