来自https://developer.android.com/preview/material/ui-widgets.html
当我们创建时,RecyclerView.Adapter我们必须指定ViewHolder将与适配器绑定.
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private String[] mDataset;
public MyAdapter(String[] myDataset) {
mDataset = myDataset;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ViewHolder(TextView v) {
super(v);
mTextView = v;
}
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.some_layout, parent, false);
//findViewById...
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTextView.setText(mDataset[position]);
}
@Override
public int …Run Code Online (Sandbox Code Playgroud) 我开发聊天应用程序,有不同类型的消息:简单的文本、图像、文件等。也只有消息(其他,在屏幕左侧)和我的消息(在屏幕右侧)。
现在我对每种类型的消息都有不同的布局:
item_message_simple
item_my_message_simple
项目消息图像
item_my_message_image
项目消息文件
项目我的消息文件
所有这些类型都在 RecyclerView.Adapter 中定义,并且 getItemViewType() 中有许多 if-else 条件
还可以回复和转发具有更复杂布局的消息。如果我想添加新的消息类型,那将是灾难。
那么如何更好地组织呢?也许它应该全部采用一种布局和 2 种类型:MESSAGE、MY_MESSAGE - 以及显示/隐藏部分布局。或者再次输入 2 种类型(MESSAGE、MY_MESSAGE)并在 ViewHolder 中填充所需的子布局。
请任何帮助!