在android中滑动时,如何隐藏/显示listview项目上隐藏的组件?
这就是我所做的。 当您滑动listview项时,我已经在listview项上显示了隐藏的组件。现在,当其他项被滑动或listview被滚动时,我需要再次隐藏组件在android中滑动时,如何隐藏/显示listview项目上隐藏的组件?,android,Android,这就是我所做的。 当您滑动listview项时,我已经在listview项上显示了隐藏的组件。现在,当其他项被滑动或listview被滚动时,我需要再次隐藏组件 public class MainActivity extends Activity { ListView lstView1; ArrayList<HashMap<String, String>> MyArrList; GestureDetector gestureDetector;
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从右向左滑动(这可能对您有帮助。
注意,只有链接的答案是不鼓励的,所以答案应该是搜索解决方案的终点(相对于另一个引用的停顿,这会随着时间的推移而变得陈旧)。请考虑在这里添加一个独立的概要,将链接作为参考。