나는 listview를 가지고 있는데, 행 (item)을 터치 할 때 (motionEvent.ACTION_DOWN) 그 배경색을 바꾸고 싶지만 listview를 스크롤하는 동안 이것을 막고 싶다. 어떻게해야합니까?onTroll이 아닌 onTouch 행의 배경색을 변경하는 방법은 무엇입니까?
여기 ListView에
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View row = convertView;
DataHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new DataHolder();
holder.newAppsLayout = (LinearLayout) row.findViewById(R.id.new_apps_layout);
holder.imageView1 = (ImageView) row.findViewById(R.id.imageView1);
row.setTag(holder);
} else {
holder = (DataHolder) row.getTag();
}
Data data = data.get(position);
ImageCacheManager.loadImage(holder.imageView1, item.getIconUrl());
final DataHolder finalHolder = holder;
row.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
finalHolder.newAppsLayout.setBackgroundColor(Color.GRAY);
} else {
finalHolder.newAppsLayout.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.content_bg)); }
return false;
}
});
return row;
static class DataHolder {
LinearLayout newAppsLayout;
ImageView imageView1;
}
이 작품에 대한 내 BaseAdapter입니다뿐만 아니라 스크롤하는 동안 터치를 사용할 수 있습니다. 어떻게 이것을 막을 수 있습니까? 내 말은, 터치 이벤트 만 있지만 스크롤은하지 않는 것입니까? 사전에
덕분에
이 의미가 있습니까? row.setOnTouchListener (새 View.OnTouchListener() { @Override 공공 부울 onTouch (보기보기, MotionEvent motionEvent) { 반환 mGestureDetector.onTouchEvent (motionEvent) } }); 그러나 그것은 작동하지 않았다. 간단한 코드를 줄 수 있습니까? –
내 이해에서 SimpleGestureDetector 및 GestureDetector는 전체 화면에서 작동하므로 메서드 외부에서 초기화해야하며 작업이 실행되는 동안 제스처를 청취해야합니다. 생성자에 gesturedetector 항목을 설정 한 경우, onTouch 메서드에서보기에 해당하는 플래그 (viewColorChange = true)를 설정 한 다음 onScroll() 메서드에서 해당 플래그를 확인하고 true이면 색상을 재설정 할 수 있습니다. onTouch 메서드가 끝날 때 여전히 mGestureDetector.onTouchEvent (motionEvent)를 반환 할 수는 있지만 확실하지는 않습니다. – Dirk