Android studio如何将list不同列数据分别提取
时间: 2024-05-11 11:16:26 浏览: 61
可以使用Adapter和ViewHolder来实现对RecyclerView中的不同列数据进行提取。在Adapter中,可以Override getItemViewType 方法,然后根据不同列的数据类型返回相应的view type,如下所示:
```
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<Object> listData;
private static final int TYPE_COLUMN_1 = 1;
private static final int TYPE_COLUMN_2 = 2;
@Override
public int getItemViewType(int position) {
Object item = listData.get(position);
if (item instanceof Column1Data) {
return TYPE_COLUMN_1;
} else if (item instanceof Column2Data) {
return TYPE_COLUMN_2;
}
return -1;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_COLUMN_1) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_column_1, parent, false);
return new Column1ViewHolder(view);
} else if (viewType == TYPE_COLUMN_2) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_column_2, parent, false);
return new Column2ViewHolder(view);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
Object item = listData.get(position);
if (holder.getItemViewType() == TYPE_COLUMN_1) {
Column1Data data = (Column1Data) item;
((Column1ViewHolder) holder).bindData(data);
} else if (holder.getItemViewType() == TYPE_COLUMN_2) {
Column2Data data = (Column2Data) item;
((Column2ViewHolder) holder).bindData(data);
}
}
}
```
在上面的代码中,我们定义了两个不同的view type:TYPE_COLUMN_1 和 TYPE_COLUMN_2, 分别对应不同列的数据类型 Column1Data 和 Column2Data。在 onCreateViewHolder 中,我们根据view type来加载不同的布局文件。 在 onBindViewHolder 中,我们根据view type来绑定不同列的数据。
阅读全文