在listview Android中重置行

时间:2013-10-17 19:48:04

标签: android android-layout listview android-listview row

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

Plz帮帮我

在这两张图片中,我只选择了第一行,但是当我滚动页面时,已经选择了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));
            }

}

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

有两个人说要解决这个问题:

  1. 按下/点击某个项目只会将该项目设置为已选中,并且用户需要单击按钮才能对该项目进行操作。

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

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