2017-10-13 63 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(....) 
} 

而且你已准备好出发。 :)快乐编码:)