2013-09-07 4 views
0
나는이 요청 피하기 위해 노력하고있는 한 내가 :(패배했다.

안드로이드 사용자 정의 [SOLVED]

을 내가하는 다음 ListActivity을 가지고 있지만 슬프게도 나를 위해이 문제를 파악하기로 결정했다

텍스트와 이미지를 표시하는 simplecursoradapter와 각 달의 구분 기호를 표시합니다.이 구분 기호와 어댑터에 입력되는 정보는 뷰 바인더를 사용하여 처리됩니다. API 8에서 작동하려면이 응용 프로그램이 필요합니다. 해당 API 버전에서 작동하지 않는 것으로 나타났습니다.

지금까지 OnItemClickListener를 사용하여 선택한 행을 가져 오려고 시도했지만이 행의 위치를 ​​저장하고 getView 메소드를 사용하여 백그라운드 자원을 설정하고 설정하지만 변경된 것으로 보이는 것은 현재 선택된 행뿐만 아니라 분리 된 행의 색상입니다.

는 OnItemClickListener는 현재 코드 내 마지막 그래서 몇 번을 변경하고 시도를 실패했습니다 : DataList에 같이 할당

datalist.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 
       mC.moveToPosition(arg2); // The Cursor 
       rowchecked = arg2; // Global variable to store the position 
       arg1.setBackgroundResource(android.R.color.holo_red_dark); // this is a recent attempt but I knew it would not work 

      Toast.makeText(getApplicationContext(), "Row "+Integer.toString(arg2) + " Clicked", Toast.LENGTH_LONG).show(); 

      }}); 

다음과 다음과 같이의 getView는

ListView datalist = getListView(); 
datalist.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE); 

를 :

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.viewdata, mC, fields, viewfields) 
     { 
      @Override 
      public View getView(int position,View convertView, ViewGroup parent) { 

       final View row = super.getView(position, convertView, parent); 
       if (position == rowchecked) { 
        Toast.makeText(getApplicationContext(), "Detected row selected , row is :"+Integer.toString(rowchecked), Toast.LENGTH_LONG).show(); 
       //row.setBackgroundResource(Color.BLUE); 
        row.setBackgroundColor(Color.BLUE); 
       mC.moveToPosition(position); 
       row.setSelected(true); 
     } 

       return row; 
      } 
     }; 

뷰 바인더 코드가 필요한 경우 r equested - 거기에 많은 것이 있기 때문에 나는이 시점에서 모든 것을 게시 할 것입니다.

는 ***

정말 OnitemClick 작동이 게시물의 OnitemLongClick 부분을 얻기 위해 애 쓰고 편집 ****는/사용 OnItemLongClick 리스너가되지 않는의 getView 상기 simplecursoradapter 방법하지만 전화를 보인다. 포함

읽기 다른 게시물이 하나 -> 내가 코드의 목록보기 객체에 대한 setonlongclick (true)를 시도하고 나는 XML 레이아웃의 목록보기에이 할당 시도 플러스 난을 만든 how to implement a long click listener on a listview

AdapterView.OnItemLongClick Listener가있는 OnItemLongLick Listener입니다.

아무도 도와 줄 수 있습니까?

감사

TimCS

+0

-이 경로는이를 만들기 위해 걸릴 것입니다 작업? – TimCS

+0

다른 문제는 선형 레이아웃 아래에 적어도 세 개의 테이블 레이아웃이 있다고 생각하는 행 레이아웃과 관련이있는 것으로 보입니다.그래서 각각의 테이블 레이아웃은 메인 레이아웃과 일치하는 자신 만의 배경색을 가지며, 행이 "터치"되었을 때 변경해야합니다. – TimCS

+0

글쎄요, 가장 최근에 행을 강조 표시 할 수 있지만 다른 행을 클릭하면, 첫 번째 숙박은 강조 표시되고 다른 행은 강조 표시됩니다! – TimCS

답변

0

지금까지 내가 어댑터에서 notifydatasetchange를 사용하여의 getView를 호출 할 onItemLongClickListener을 가지고있다. 내 문제는 이제 행을 선택하면 항상 목록의 첫 번째 행을 강조 표시합니다.

가 setviewbinder 및 setviewvalue 방법을 사용하여 지금을 정렬 .. 여기에 코드입니다 : 나는 simplecursoradapter을 확장 사용자 정의 어댑터를 작성해야하는 경우 지금 궁금

// is the current cursor position the same that has been Long Clicked    
if (cursor.getPosition()==longrowclick1) { 

    // sets up parent view of object 
    myviewp = (View) view.getParent(); 
    // checks if parent view is valid (there are a lot here) 
    if (((View)view.getParent()).getId()==R.id.Table1 || ((View)view.getParent()).getId()==R.id.tableRow1 || ((View)view.getParent()).getId()==R.id.tableRow2 || ((View)view.getParent()).getId()==R.id.tableRow3 || ((View)view.getParent()).getId()==R.id.Table2 || ((View)view.getParent()).getId()==R.id.Table3) { 

     // If the parent views are valid set the background to dark slate blue 
     myviewp.setBackgroundResource(R.drawable.darkslateblue); 
     // if one of the child views are not the date separator then .. 
     if (view.getId()!=R.id.seper) { 
      // ... set them to the dark slate blue ... 
      view.setBackgroundResource(R.drawable.darkslateblue); 
     } else { // else if the child object is the date separator .. 
      // .. keep it as dark gray 
      view.setBackgroundColor(Color.DKGRAY); 
     } 



    } 




} else {// if the cursor position does not match the Long Click Position then .. 
    // .. get the parent of the current child object ... 
    myviewp = (View) view.getParent(); 
    // .. set the background of the parent to black .. 
    myviewp.setBackgroundColor(Color.BLACK); 
    // .. check to make sure that the child object is not the date separator ... 
    if (view.getId()!=R.id.seper) { 
     // .. and then set the child object background to black .. 
     view.setBackgroundColor(Color.BLACK); 
    } else { // .. else if it the child object is the date separator then .. 
     // .. set it to the dark gray background . 
     view.setBackgroundColor(Color.DKGRAY); 
    } 


} 
관련 문제