Хотите подсчитать элементы ListView и показать счетчик для каждого элемента ListView

Я застрял в подсчете ListView элементов и показывал счетчики на определенных элементах ListView. Пожалуйста, смотрите ниже, что я хочу сделать:

Вот пример элементов ListView:

Программа (Подсчет элементов списка) ‹ Мой заголовок >

Ex.

  • Программа (1/10) Android
  • Программа (2/10) Java
  • Программа (10/10) Java
  • ...более

Я получаю эти элементы списка из моей локальной базы данных, пожалуйста, предложите мне какие-либо идеи


person CKnDROID    schedule 25.02.2013    source источник


Ответы (4)


Я рекомендую вам создать подкласс некоторого ListAdapter, а в методе getView() просто использовать int position для получения позиции каждого дочернего элемента и размер источника данных для получения общего количества.

Например, если вы будете использовать SimpleCursorAdapter, используйте cursor.getCount() для подсчета элементов и параметр int position метода getView() для получения позиции каждого дочернего элемента (строки).

Основной пример:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
   if (c.moveToPosition(position) { 
      String name = c.getString(c.getColumnIndex(Constants.COL));
      String another = c.getString(c.getColumnIndex(Constants.COL_2));
      String text = value + "(" + String.valueOf(position) + "/" + String.valueOf(c.getCount()) + ") " + another; 
      textView.setText(text);
   }
}
person Simon Dorociak    schedule 25.02.2013
comment
Я сделал ниже код из вашего объяснения и вашего примера кода. Большое спасибо sajmon_d.. :) - person CKnDROID; 25.02.2013

Добавьте текстовое представление в пользовательский макет для списка и установите position +"/10" в этом текстовом представлении.

person AnujMathur_07    schedule 25.02.2013
comment
У меня нет. предметов не только 10. кстати Спасибо.. АнуйМатур. - person CKnDROID; 25.02.2013
comment
Таким образом, вы можете изменить /10 на то, что хотите, например, на размер массива или массива, который вы используете для создания списка. - person AnujMathur_07; 25.02.2013
comment
Спасибо за ваше предложение, AnujMathur... :) Я решил свою проблему следующим образом: mHolder.mTxt_index.setText((position + 1) + / + MyFragment.‹ArrayList›.size()); - person CKnDROID; 25.02.2013

вы можете получить длину всего элемента, а затем попробовать код ниже.

for (int i = 0; i < length; i++) {
 Syllabus (i/total length) < My Heading >
       }
person kyogs    schedule 25.02.2013
comment
Спасибо за ваше предложение, kyogs... :) Я решил свою проблему следующим образом: mHolder.mTxt_index.setText((position + 1) + / + MyFragment.‹ArrayList›.size()); Но из вашего кода я решил много проблем :) - person CKnDROID; 26.02.2013

Вам нужно иметь свой собственный CursorAdapter, например

public class ExampleCursorAdapter extends CursorAdapter {
public ExampleCursorAdapter(Context context, Cursor c) {
    super(context, c);
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
    TextView summary = (TextView)view.findViewById(R.id.summary);
    summary.setText(cursor.getString(
            cursor.getColumnIndex(ExampleDB.KEY_EXAMPLE_SUMMARY)));
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View v = inflater.inflate(R.layout.item, parent, false);
    bindView(v, context, cursor);
    return v;
}
}
person Kapil Vats    schedule 25.02.2013
comment
Спасибо за ваше предложение, Капил Ватс... Но я решил свою проблему следующим образом: mHolder.mTxt_index.setText((position + 1) + / + MyFragment.‹ArrayList›.size()); - person CKnDROID; 25.02.2013