2012-03-20 5 views
0

내 응용 프로그램에서 웹보기를 목록보기로 팽창시키고 길게 누르는 클릭 이벤트를 웹보기로 설정했습니다. 긴 언론에 나는 목록보기에 표시 할 항목을 복제하고 있습니다. 이미지에 표시된대로.안드로이드의 화면과 관련하여 listview에서 Clicked Item의 y 위치를 알아내는 방법

중복 된보기가 클릭 된 항목 바로 위에 나타날 수 있도록 클릭 한 항목 위치를 알고 싶지만 이제는 목록의 첫 번째 항목에 나타납니다.

회색으로 표시되는 항목은 중복 된 항목이며, 10 번째 항목을 클릭하면 첫 번째 항목에 표시됩니다. 어떻게하면 10 항목 에 나타납니다 만들 것입니다! [1]

wv.setOnLongClickListener(new OnLongClickListener() { 

      @Override 
      public boolean onLongClick(View v) { 
       duplicateView.setVisibility(View.VISIBLE); 
       Log.d("lvsectionTwo "+lvsectionTwo.getScrollY(),"log"); 
       WebView wv = (WebView) duplicateView.findViewById(R.id.wv1); 
       wv.loadData("item "+position, "text/html", null); 
       wv.setBackgroundColor(Color.DKGRAY); 

       ![enter image description here][2] 



       return true; 
      } 
     }); 
     return view; 
    } 
+0

어떤 어댑터를 사용 하시겠습니까? –

답변

2

에 의해 뷰의 y 위치를 가져옵니다 : http://developer.android.com/reference/android/view/View 대신 OnLongClickListener의 그것은 당신에게 위치를 제공하기 때문에, 나는,하지만 OnItemLongClickListener 사용하십시오 .html # getLocationInWindow % 28int [] % 29

길이가 2 인 정수 배열이 필요하며, y 좌표가 해당 배열 객체에 저장되면 해당 객체를 사용하여 뷰의 위치를 ​​얻습니다.

개인 OnItemLongClickListener onlongpressed = new OnItemLongClickListener() {

  @Override 
      public boolean onItemLongClick(AdapterView<?> arg0, View view, 
          int position, long id) { 
        duplicateView = ((LayoutInflater) getBaseContext().getSystemService(
            LAYOUT_INFLATER_SERVICE)).inflate(R.layout.dragview, null); 
        frlayout.addView(duplicateView); 
        int[] dimensions=new int[2]; 
        getLocationInWindow (dimensions); 
        FrameLayout.LayoutParams layoutParams = frlayout.getLayoutParams(); 
        layoutParams.setMargins(0, dimensions[1]-20, 0, 0); 
        duplicateView.setLayoutParams(layoutParams); 
        duplicateView.setVisibility(View.VISIBLE); 
        WebView wv = (WebView) duplicateView.findViewById(R.id.wv1); 
        wv.setBackgroundColor(Color.DKGRAY); 
        wv.loadData("Item "+position, "text/html", null); 
        return true; 
      } 
    }; 
1

나는 당신이 할 수있는 모든 당신의 어댑터에서 작동되는 기본 데이터 구조에 요소를 삽입 생각하는 것 [여기 이미지 설명을 입력합니다] 적절한 장소.

getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 

    public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int position, long id) { 
     // add something to your structure at (position - 1) and refresh your ListView. 
    } 
} 
관련 문제