0

在 ListView 中,当我选择行时,它会设置背景颜色,并重置上一个选择的行。但是当 listview 向下滚动时,它显示选择了其他行相同的背景意味着一页一页向下滚动该行被选中。

请帮帮我

在这两个图像中,我只选择了第一行,但是当我滚动第 23 页时,已经选择了第 23 行。如何设置带有可滚动页面的选定行?

ListView lv = getListView();
    lv.setTextFilterEnabled(true);

    lv.setBackgroundResource(R.drawable.shape);

    // on seleting single voter
    // launching Edit Product Screen       

    lv.setOnItemClickListener(new OnItemClickListener() {

        //mOnDoubleTapListener = listener;

        @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

            boolean netFlag = new validationClass().haveNetworkConnection(context);

            if(!netFlag) {
                Toast.makeText(getApplicationContext(), "Data Connection is not available.", Toast.LENGTH_LONG).show();
                return;
            }

            if (currentSelectedView != null && currentSelectedView != view) {
                TextView textViewName = (TextView) currentSelectedView.findViewById(R.id.name);
                TextView textViewPart = (TextView) currentSelectedView.findViewById(R.id.partno);
                textViewName.setTextColor(getResources().getColor(android.R.color.darker_gray));
                textViewPart.setTextColor(getResources().getColor(android.R.color.darker_gray));
            } currentSelectedView =view
                TextView textViewName = (TextView) view.findViewById(R.id.name);
                TextView textViewPart = (TextView) view.findViewById(R.id.partno);
                                textViewName.setTextColor(getResources().getColor(R.color.text_color));
                textViewPart.setTextColor(getResources().getColor(R.color.text_color));
            }

}

在此处输入图像描述

在此处输入图像描述

4

1 回答 1

1

有两种说法可以解决这个问题:

  1. 按下/单击一个项目只是将项目设置为选中,用户需要单击一个按钮来操作该项目。

  2. 由于您的列表视图是全屏的,因此让 onClick() 记录所选项目的位置。在随后的单击中,将当前位置与上一个位置进行比较。如果它们不一样,只需记录新位置。如果它们相同,请继续操作。或者,如果当前位置与上一个位置相同,您可以要求用户执行长按 (onItemLongClick()) 以对选择进行操作。

无论哪种方式都可以帮助您的应用在用户真正尝试滚动时避免检测到点击。如果用户立即开始滚动,Android 将不会调用 onClick()。你无法控制这一点。

于 2013-10-17T21:40:09.157 回答