在android中滑动时,如何隐藏/显示listview项目上隐藏的组件?

在android中滑动时,如何隐藏/显示listview项目上隐藏的组件?,android,Android,这就是我所做的。 当您滑动listview项时,我已经在listview项上显示了隐藏的组件。现在,当其他项被滑动或listview被滚动时,我需要再次隐藏组件 public class MainActivity extends Activity { ListView lstView1; ArrayList<HashMap<String, String>> MyArrList; GestureDetector gestureDetector;

这就是我所做的。 当您滑动listview项时,我已经在listview项上显示了隐藏的组件。现在,当其他项被滑动或listview被滚动时,我需要再次隐藏组件

public class MainActivity extends Activity {

    ListView lstView1;
    ArrayList<HashMap<String, String>> MyArrList;
    GestureDetector gestureDetector;
    View.OnTouchListener gestureListener;

    private static final int SWIPE_MIN_DISTANCE = 120;
    private static final int SWIPE_MAX_OFF_PATH = 250;
    private static final int SWIPE_THRESHOLD_VELOCITY = 100;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyArrList = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> map;

        /*** Rows 1 ***/
        map = new HashMap<String, String>();
        map.put("ImageID", "1");
        map.put("ImageDesc", "Sea View1");
        map.put("ImagePath", "pic_a");
        map.put("status", "false");
        MyArrList.add(map);

        /*** Rows 2 ***/
        map = new HashMap<String, String>();
        map.put("ImageID", "2");
        map.put("ImageDesc", "Sea View2");
        map.put("ImagePath", "pic_b");
        map.put("status", "false");
        MyArrList.add(map);

        /*** Rows 3 ***/
        map = new HashMap<String, String>();
        map.put("ImageID", "3");
        map.put("ImageDesc", "Sea View 3");
        map.put("ImagePath", "pic_c");
        map.put("status", "false");
        MyArrList.add(map);

        /*** Rows 4 ***/
        map = new HashMap<String, String>();
        map.put("ImageID", "4");
        map.put("ImageDesc", "Sea View 4");
        map.put("ImagePath", "pic_d");
        map.put("status", "false");
        MyArrList.add(map);

        // listView1
        lstView1 = (ListView) findViewById(R.id.listView1);

        lstView1.setAdapter(new ImageAdapter(this));
        // lstView1.setEnabled(false);

        gestureDetector = new GestureDetector(new MyGestureDetector());
        gestureListener = new View.OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                if (gestureDetector.onTouchEvent(event)) {
                    return true;
                }
                return false;
            }
        };
        lstView1.setOnTouchListener(gestureListener);
        //lstView1.setOnScrollListener(l)
    }

    class MyGestureDetector extends SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                float velocityY) {
            try {
                if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
                    return false;
                // right to left swipe
                if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
                        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

                    int pos = YourSlideRightToLeft(lstView1.pointToPosition(
                            (int) e1.getX(), (int) e1.getY()));
                    MyArrList.get(pos).put("status", "true");
                    ((BaseAdapter) lstView1.getAdapter())
                            .notifyDataSetChanged();

                } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
                        && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
                    // left to right swipe
                    YourSlideLeftToRight(lstView1.pointToPosition(
                            (int) e1.getX(), (int) e1.getY()));
                    int pos = YourSlideRightToLeft(lstView1.pointToPosition(
                            (int) e1.getX(), (int) e1.getY()));
                    MyArrList.get(pos).put("status", "true");
                    ((BaseAdapter) lstView1.getAdapter())
                            .notifyDataSetChanged();

                }
            } catch (Exception e) {
                // nothing
                return true;
            }

            return true;

        }
    }

    // Command for Slide Right to Left (<-----)
    public int YourSlideRightToLeft(int position) {
        Toast.makeText(
                MainActivity.this,
                "<-- Your Slide Right to Left ImgID = "
                        + MyArrList.get(position).get("ImageID"),
                Toast.LENGTH_SHORT).show();
        return position;
    }

    // Command for Slide Left to Right (<-----)
    public int YourSlideLeftToRight(int position) {
        Toast.makeText(
                MainActivity.this,
                "---> Your Slide Left to Right ImgID = "
                        + MyArrList.get(position).get("ImageID"),
                Toast.LENGTH_SHORT).show();
        return position;
    }

    public class ImageAdapter extends BaseAdapter {
        private Context context;

        public ImageAdapter(Context c) {
            // TODO Auto-generated method stub
            context = c;
        }

        public int getCount() {
            // TODO Auto-generated method stub
            return MyArrList.size();
        }

        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        public View getView(final int position, View convertView,
                ViewGroup parent) {
            // TODO Auto-generated method stub

            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            if (convertView == null) {
                convertView = inflater.inflate(R.layout.activity_column, null);
            }

            // ColImage
            ImageView imageView = (ImageView) convertView
                    .findViewById(R.id.ColImgPath);
            imageView.getLayoutParams().height = 80;
            imageView.getLayoutParams().width = 80;
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(5, 5, 5, 5);
            int ResID = context.getResources().getIdentifier(
                    MyArrList.get(position).get("ImagePath"), "drawable",
                    context.getPackageName());
            imageView.setImageResource(ResID);

            // ColImgID
            TextView txtPosition = (TextView) convertView
                    .findViewById(R.id.ColImgID);
            txtPosition.setPadding(10, 0, 0, 0);
            txtPosition.setText(MyArrList.get(position).get("ImageID") + ".");

            // ColPicname
            TextView txtPicName = (TextView) convertView
                    .findViewById(R.id.ColImgDesc);
            txtPicName.setPadding(5, 0, 0, 0);
            txtPicName.setText(MyArrList.get(position).get("ImageDesc"));
            String value = MyArrList.get(position).get("status");
            if (value.contentEquals("true")) {
                ((TableRow) convertView.findViewById(R.id.tableRow4))
                        .setVisibility(View.VISIBLE);
                ((Button) convertView.findViewById(R.id.btn)).setTag(Integer
                        .valueOf(position));
                ((ToggleButton) convertView.findViewById(R.id.tg))
                        .setTag(Integer.valueOf(position));
            } else {
                ((LinearLayout) convertView.findViewById(R.id.tableRow4))
                        .setVisibility(View.GONE);
            }

            return convertView;

        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}
公共类MainActivity扩展活动{
列表视图1;
ArrayList MyArrList;
手势检测器;
View.OnTouchListener手势Listener;
专用静态最终整数滑动距离=120;
专用静态最终整数滑动路径=250;
专用静态最终整数滑动\u阈值\u速度=100;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyArrList=newarraylist();
HashMap图;
/***第1行***/
map=新的HashMap();
地图放置(“图像ID”、“1”);
地图放置(“图像描述”、“海景1”);
地图放置(“图像路径”、“图片a”);
地图放置(“状态”、“假”);
MyArrList.add(map);
/***第2行***/
map=新的HashMap();
地图放置(“图像ID”、“2”);
地图放置(“图像描述”、“海景2”);
地图放置(“图像路径”、“图片b”);
地图放置(“状态”、“假”);
MyArrList.add(map);
/***第3行***/
map=新的HashMap();
地图放置(“图像ID”、“3”);
地图放置(“ImageDesc”、“海景3”);
地图放置(“图像路径”、“pic_c”);
地图放置(“状态”、“假”);
MyArrList.add(map);
/***第4行***/
map=新的HashMap();
地图放置(“图像ID”、“4”);
地图放置(“ImageDesc”、“海景4”);
地图放置(“图像路径”、“图片d”);
地图放置(“状态”、“假”);
MyArrList.add(map);
//列表视图1
lstView1=(ListView)findViewById(R.id.listView1);
lstView1.setAdapter(新的ImageAdapter(this));
//lstView1.setEnabled(false);
gestureDetector=新的gestureDetector(新的MyGestureDetector());
gestureListener=新建视图。OnTouchListener(){
公共布尔onTouch(视图v,运动事件){
if(手势检测器onTouchEvent(事件)){
返回true;
}
返回false;
}
};
lstView1.setOnTouchListener(手势Listener);
//lstView1.setOnScrollListener(l)
}
类MyGestureDetector扩展了SimpleOnGestureListener{
@凌驾
公共布尔onFling(运动事件e1、运动事件e2、浮点速度X、,
浮动速度y){
试一试{
if(Math.abs(e1.getY()-e2.getY())>swip\u MAX\u OFF\u路径)
返回false;
//从右向左滑动
如果(e1.getX()-e2.getX()>滑动最小距离
&&Math.abs(velocityX)>滑动阈值(速度){
int pos=您的幻灯片右侧至左侧(lstView1.pointToPosition(
(int)e1.getX(),(int)e1.getY();
MyArrList.get(pos.put)(“status”,“true”);
((BaseAdapter)lstView1.getAdapter())
.notifyDataSetChanged();
}else if(e2.getX()-e1.getX()>滑动最小距离
&&Math.abs(velocityX)>滑动阈值(速度){
//从左向右滑动
您的SlideLeftToRight(lstView1.PointTopLocation(
(int)e1.getX(),(int)e1.getY();
int pos=您的幻灯片右侧至左侧(lstView1.pointToPosition(
(int)e1.getX(),(int)e1.getY();
MyArrList.get(pos.put)(“status”,“true”);
((BaseAdapter)lstView1.getAdapter())
.notifyDataSetChanged();
}
}捕获(例外e){
//没什么
返回true;
}
返回true;
}
}

//Prand从右向左滑动(

这可能对您有帮助。

注意,只有链接的答案是不鼓励的,所以答案应该是搜索解决方案的终点(相对于另一个引用的停顿,这会随着时间的推移而变得陈旧)。请考虑在这里添加一个独立的概要,将链接作为参考。