Android ListView中的多种单元格类型

Android ListView中的多种单元格类型,android,listview,Android,Listview,我想做的是为一本书显示一些数据,比如标题、作者和封面,在这些数据下面,有一个包含可点击章节列表的列表视图 我认为有一种方法是使用一个具有不同类型单元格的ListView,其中第一个单元格将包含数据,其余的单元格将是包含章节的简单单元格。ListView绑定到实现newView的自定义游标适配器。。。和bindView。。。方法,我不知道如何定制这些方法,以便根据单元格的位置返回不同类型的单元格 @Override public void bindView(View view, Context c

我想做的是为一本书显示一些数据,比如标题、作者和封面,在这些数据下面,有一个包含可点击章节列表的列表视图

我认为有一种方法是使用一个具有不同类型单元格的ListView,其中第一个单元格将包含数据,其余的单元格将是包含章节的简单单元格。ListView绑定到实现newView的自定义游标适配器。。。和bindView。。。方法,我不知道如何定制这些方法,以便根据单元格的位置返回不同类型的单元格

@Override
public void bindView(View view, Context context, Cursor cursor) {

    TextView title = (TextView) view.findViewById(R.id.title);
    title.setText(cursor.getString(cursor.getColumnIndex(Constants.TITLE)));
    ..
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View v = inflater.inflate(R.layout.bookcell, parent, false);
    bindView(v, context, cursor);
    return v;
}
我该怎么做

谢谢

您可以通过以下方式完成此操作:

重写getViewTypeCount并返回不同行布局的数量 重写getItemViewType并返回用于给定位置的行布局的基于0的索引 根据位置调整newView和bindView以使用正确的行类型,例如,newView根据位置对不同的行布局进行充气
或者,您可以尝试使用my之类的工具将适配器从多个部件组装起来。

我应该如何调整newView和bindView?他们没有立场论证。。。你能提供一个代码示例吗?谢谢@乔治B89:你的位置可以通过在光标上调用getPosition来找到。嗯。。我试着这么做,但现在我意识到数据来自两个不同的数据集,一个用于章节,另一个用于书的其他细节,所以我需要两个不同的游标…:S@georgeb89:如果查询SQLite,则联接可能会起作用。否则,是的,您将需要您自己的非常复杂的适配器来将两个游标混合到您正在寻找的标题和细节模型中。我可以使用您自己的MergeAdapter来解决这个问题吗?我正在查询SQLite,但我不想使用联接。。。