如何强制simple_list_item_checked在Java中检查某些项目?

时间:2014-08-16 20:09:47

标签: java android listview

我正在编写一个程序,其中包含当前安装在手机上的应用程序列表,可从辅助活动访问。此活动创建当前安装的应用程序列表,检查它们是否在静态列表中,如果是,则在任何用户交互之前检查这些项目。然后,用户可以通过点击以检查项目然后被添加到静态列表来与列表交互。

我使用simple_list_item_checked和setItemChecked()函数在给定索引号的情况下将特定项设置为已检查。这在早期工作得非常好(我相信adt捆绑的旧版本)。当我将adt包升级到最新的迭代时(由于adt和android版本之间的一些兼容性问题我不得不通过eclipse进行),它不再有效。

我已经包含了以下代码。有问题的部分被标记。我已经包含了其余部分,以便提供上下文和数据类型。

我已经在这个问题上苦苦挣扎了几个星期而无济于事。

先谢谢!

public static ArrayAdapter<String> arrayAdapterList = null;
public static String[] myStaticList = {};
public static String[] mypackages;
ListView myListView = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    /* Some Initialization code here  
     * .....
     * .....
     */
    arrayAdapterList = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_checked, mypackages);
    myListView.setAdapter(arrayAdapterList);

    // OnClickListener checks and unchecks the item as well as add/remove
    // from the static list
    myListView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            /* The item is checked/unchecked as well as added/removed from the static list
             * .......
             * .......
             */
        }
    });

    /**** PROBLEMATIC CODE SEGMENT *****/
    if (myStaticList.length <= 0) {
        Log.d("DEBUG", "Zero Count");
        for (int i = 0; i < myListView.getCount(); i++) {
            myListView.setItemChecked(i, false);
        }
    } else {
        Log.d("DEBUG", "Non Zero Count " + myStaticList.length);
        for (int i = 0; i < myListView.getCount(); i++) {
            boolean shouldCheck = false;
            String temp = (String) myListView.getItemAtPosition(i);
            for (String s : myStaticList) {

                if (temp.equals(s)) {
                    shouldCheck = true;
                    break;
                }
            }

            /* The program does reach up to this point and even executes
             * the setItemChecked() but no change occurs in the actual list item.
             */
            Log.d("DEBUG", "Checked: " + shouldCheck);
            myListView.setItemChecked(i, shouldCheck);
        }
    }
}

0 个答案:

没有答案