cursoradapter avec différentes mises en ligne

Je suis en train de créer un personnalisé cursoradapter qui va utiliser deux différentes mises en page en fonction de certaines données dans le curseur. Je lis à propos de 'impérieuse getViewTypeCount() et getItemViewType()' pour faire ça, mais je n'arrive pas à comprendre comment mettre en œuvre cette..

C'est mon code pour le bindView et de nouvelles méthodes de Vue:

@Override
public void bindView(View view, Context context, Cursor cursor) {
    TextView tView = (TextView) view.findViewById(R.id.TextView1);
    tView.setText("The text");
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    return mInflater.inflate(R.layout.item1, parent, false);
}

.

EDIT:
Maintenant, je suis à ce travail, mais je veux choisir ce rowlayout à utiliser en fonction de certaines données dans le curseur et je ne peux pas obtenir que le travail.. quelqu'un a obtenu quelques idées?

@Override
public int getItemViewType(int position) {
    return position % 2;
}

@Override
public int getViewTypeCount() {
    return 2;
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
    ViewHolder holder = (ViewHolder) view.getTag();
    holder.txtAddress
            .setText("blabla");
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    ViewHolder holder = new ViewHolder();
    View v = null;
    int type = cursor.getPosition() % 2;
    if(type == 0) {
        v = mInflater.inflate(R.layout.item, parent, false); 
    } else {
        v = mInflater.inflate(R.layout.item2, parent, false);
    }

    holder.txtAddress = (TextView) v.findViewById(R.id.tvName);

    v.setTag(holder);
    return v;
}
  • Cherchez-vous à ajouter des sections/rubriques à votre liste de point de vue? Mark Murphy a fait un vraiment facile à utiliser cwac-liste de fusion de l'adaptateur qui peut aider.
  • Non, j'ai 2 mises en page différentes et parfois, j'ai envie d'utiliser layout1 si mCursor.getString(mCursor.getColumnIndex("type")).equals("1") et je veux utiliser layout2 quand mCursor.getString(mCursor.getColumnIndex("type")).equals("2")
  • Si vous le vouliez, vous pourriez simplement de prendre deux curseurs. Où type == 1 et un pour où type == 2. C'est le ghetto, mais il peut vous aider à aller de l'avant.
InformationsquelleAutor jagsler | 2011-12-12