我的目的是使选中的项目(从列表 View 中)突出显示。
使用下面的代码,它可以完美地工作:

@Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int post,
                    long arg3) {

                int itemPosition = post;
                String itemValue = (String) lst_peers
                        .getItemAtPosition(itemPosition);
                sendMessage(itemValue + " has been selected!");

                obOpponent = new Opponent(peerListID.get(itemPosition),
                        itemValue);

                // turning off the discovery process if any
                discTime = 0;

                // set the item highlighted
                lst_peers.setItemChecked(itemPosition, true);
                arg1.setBackgroundColor(Color.YELLOW);

            }

但是,我的问题是
如何使商品恢复正常状态的颜色(不突出显示),
一旦用户单击另一个项目?

我试图将循环放在onItemClick方法内,但android崩溃了!

最佳答案

答案1-最快:
尝试一些技巧:
定义一个全局View变量View TempView并使用它存储您的View arg1以便以后(单击鼠标右键)将其更改为原始背景:

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int post,
                long arg3) {

            int itemPosition = post;
            String itemValue = (String) lst_peers
                    .getItemAtPosition(itemPosition);
            sendMessage(itemValue + " has been selected!");

            obOpponent = new Opponent(peerListID.get(itemPosition),
                    itemValue);

            // turning off the discovery process if any
            discTime = 0;

            // set the item highlighted
            lst_peers.setItemChecked(itemPosition, true);
            if (!(tempView == null)) {
                    tempView.setBackgroundColor(YOUR_ORIGINAL_BACKGROUND);
                }
                tempView = arg1;
                tempView.setBackgroundColor(Color.YELLOW);


        }
每次单击时,将颜色更改为黄色,并且先前单击的颜色将恢复为所需的原始颜色。
答案2-更好的选择器
在您的xml中,添加到列表 View android:listSelector="@drawable/yourselector" >这是一个XML文件,您可以在其中执行listview内的click事件,例如以下示例:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item android:state_enabled="true">
   <shape xmlns:android="http://schemas.android.com/apk/res/android"
      android:shape="rectangle">
       <gradient
          android:startColor="#6018d7e5"
          android:centerColor="#6016cedb"
          android:endColor="#6009adb9"
          android:angle="270" />
    </shape>
   </item>
   <item android:state_pressed="true">
      <!-- (...)
   </item>
   <item android:state_selected="true" android:state_pressed="false">
      <!-- (...)
   </item>

 </selector>

关于java - listview的onItemClick和案例内部循环,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24734370/

10-11 00:00