3

我编写了以下代码,但它仅适用于前 3 个列表项,其余的会引发空指针异常。

list.setOnItemLongClickListener(new OnItemLongClickListener() {

        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,final int arg2, long arg3) {
            // TODO Auto-generated method stub

            for(int i = 0; i <=list.getLastVisiblePosition(); i++)
            {
                System.out.println("onItemLongClick"+i);
                if(i==arg2)
                {
                    (list.getChildAt(i).findViewById(R.id.mark)).setVisibility(View.VISIBLE);
                    (list.getChildAt(i).findViewById(R.id.deleteitem)).setVisibility(View.VISIBLE);

                }
                else{
                    (list.getChildAt(i).findViewById(R.id.mark)).setVisibility(View.GONE);
                    (list.getChildAt(i).findViewById(R.id.deleteitem)).setVisibility(View.GONE);
                }
            }

            (list.getChildAt(arg2).findViewById(R.id.deleteitem)).setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Toast.makeText(AllMessagesActivity.this, "Delete at" +arg2, Toast.LENGTH_LONG).show();
                }
            });
         (list.getChildAt(arg2).findViewById(R.id.mark)).setOnClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Toast.makeText(AllMessagesActivity.this, "Mark Spam at" +arg2, Toast.LENGTH_LONG).show();
                }
            });
            return false;
        }
    });

在列表项中只有一个文本项和两个按钮。当我单击一个列表项时,只有该项目的两个按钮必须可见,其余的列表项按钮不可见。当您单击其他列表项时,先前选定的项目按钮也会禁用。上面的代码仅适用于列表的前 3 项,但并不适用于所有项目。

先感谢您。

4

1 回答 1

1

您需要在适配器中为此列表视图处理此问题。查看类似问题:

如何禁用列表视图中的子项(使其颜色为灰色且不可点击)

Android:如何在创建列表时禁用列表项

如何禁用列表视图中的项目?

本教程也很有用:

http://www.vogella.com/articles/AndroidListView/article.html

具体来说,您可能想查看该教程的第 2 部分,其中他展示了如何更改被选中的列表项。你会在你的情况下做类似的事情,除了你会改变其他人,也许做一些簿记来跟踪“活动”列表项。

祝你好运。

于 2012-09-01T06:25:08.817 回答