2017-10-13 77 views
0

我在這裏得到了問題。在綁定數據時,不能使用公共對象。我應該創建一個從其他類獲取數據並將文本設置爲某個XML的類。RecyclerView onBind,沒有綁定數據

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); 
    } 
} 

} 
+0

請將代碼添加爲文本。 –

+0

當然,上傳截圖比在一個問題中複製粘貼代碼更困難。曾經想過可能想要獲取代碼並進行編輯的人,以便他們能夠提出答案? –

+0

讓我編輯這個問題,請:) :) – prazeev

回答

0

你不使用你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); 

} 
0

由於您在onBind方法中使用RecyclerView.ViewHolder,因此無法解析。使用你自定義的EventsAdapter.ViewHolder類來解決你的變量。對於如:

public void onBindViewHolder(EventsAdapter.ViewHolder holder, int position) { 

} 
+0

不,沒有給出解決方案。 – prazeev

0

嘗試改變擴展了這個.. RecyclerView.Adapter <「EventsAdapter.ViewHolder」>沒有「」當然

0

讓你EventsAdapter延長RecyclerView.Adapter<EventsAdapter.MyViewholder>,然後再實現方法和構造,因此您的onBindViewHolder將使用EventsAdapter.ViewHolder holder本身創建。

希望這有助於..

0

有兩種方法可以做到這一點:

讓您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(....) 
} 

而且你已準備好出發。 :)快樂編碼:)