显示父活动的列表视图项中(“子”活动的)已检查项目的编号

时间:2012-07-23 14:21:00

标签: android listview

这适用于Android。

首先,我想到的一个例子是:

Camping trip planner example

我怎么能达到这个效果?此列表视图的项目显示子列表视图中未选中项目的数量,当您单击其中一个父列表视图的项目时,这些项目会打开。我应该为子活动使用静态类吗?或者与第一个列表视图中的行一样多的实例?有人可以给我一个例子吗?非常感谢你!

2 个答案:

答案 0 :(得分:0)

我假设你有一个类似于任务的模型。

创建一个名为ProgressCounter的抽象类。 设置两个静态值:

 public static int totalNumberOfTasks;
 public static int taskProgress;

然后你创建一个静态方法并迭代它:

public static void countProgress(ArrayList<Tasks> allTasks){
 ProgressCounter.totalNumberOfTasks = allTask.size();
 int taskProgress = 0;
   for(Task task : allTasks){
   if(task.isCompleted());
   taskProgress++;
 }
 ProgressCounter.taskProgress = taskProgress;
 }

我希望这可以指出你正确的方向:)

答案 1 :(得分:0)

Slickelito,谢谢你的回答,我学到了一些关于抽象类的东西,但最后我遇到了自己的解决方案:

我制作了自己的游标适配器和这个方法 -

public int getChildCount(long lvPhase) {
    String phase = Long.toString(lvPhase);
    String[] projection = { FlightBundleDatabase.ID };
    String[] selectionArgs = { Long.toString(mAircraft), phase };
    int count = 0;

    CursorLoader cursorLoader = new CursorLoader(mContext, FlightBundleProvider.CONTENT_URI_CHECKLISTS, projection, "aircraft_id = ? AND phase = ?", selectionArgs, null);
    Cursor cursor = cursorLoader.loadInBackground();
    int cCount = cursor.getCount();
    if (cursor.moveToFirst()) { 
        for (int i = 0; i < cCount; i++) {
            long currentItem = cursor.getLong(cursor.getColumnIndexOrThrow(FlightBundleDatabase.ID));
            if (mSettingsActivity.contains(phase + currentItem)) {
                count++;
                }
            cursor.moveToNext();
        }
    }
    cursor.close();
    return count;
}

然后我将计数器TextView文本绑定到此方法的返回值。它似乎有效,虽然我不完全确定效率。