簡體   English   中英

RecyclerView onBind,不綁定數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM