2012-12-01 4 views
0

enter image description here 목록보기 항목에 초점을 맞추어야합니다. ListView는 TextView로 구성됩니다. 지점 내가 listview 항목에 초점을 설정하려면, 그 시점에서 그 항목의 위치가 있습니다.listview 항목에서 포커스를 설정하는 방법은 무엇입니까?

setSelectio (pos)를 사용해 보았습니다. pos는 listview 항목의 위치이지만, 화면 상단의 위치에 항목의 위치가 설정됩니다.

진행 방법을 알려주십시오.

builder.setPositiveButton(R.string.save, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) { 
         Log.d("@gaurav", "changeText is not null"); 

         if (null != changeText) { 
          Log.d("@gaurav", "changeText is not null"); 
          if (!(changeText.getText().toString().equalsIgnoreCase(""))) { 
           myList 
             .set(pos, changeText.getText() 
               .toString()); 
           adapter.notifyDataSetChanged(); 
           setListAdapter(adapter); 
          } 
         } else { 
          Log.d("@gaurav", "changeText is null"); 
         } 
         getListView().setFocusableInTouchMode(true); 
         getListView().setSelection(pos); 
         getListView().requestFocus(); 
        } 

       }); 
+0

당신은 당신이'setSelection (POS)를 호출하는 방법의 코드를 게시 할 수있는' – mango

+0

가 왜 특정 행에 포커스를 설정 하시겠습니까? 색상 선택기를 변경 하시겠습니까? 레이아웃에 EditText를 사용하여 포커스를 설정 하시겠습니까? – Sam

+0

질문을 편집했습니다. 문제를 더 잘 이해하기 위해 시나리오 부분을 참조하십시오. –

답변

5

귀하의 요구 사항에 따라 특정 목록 항목을 강조하고 싶습니다. 따라서 항목이 화면에 표시되지 않으면 포커스를 설정할 수 없습니다. 내가 맞습니까? 그게 문제가되면 다음과 같은 방법으로 public void smoothScrollToPosition (int position) Added in API level 8을 사용하여 특정 위치로 스크롤 한 다음 setSelection() 메서드를 사용할 수 있습니다.

+0

부분적으로 정확합니다. 예, 목록보기에서 항목을 강조 표시하려고하지만 해당 항목은 모든 경우에 화면에 표시됩니다. 그래서 그 항목을 강조의 문제. 예를 들어 스냅 샷과 마찬가지로 listview에서 Sit가 선택 되었기 때문에 Save 또는 Reset을 클릭하면 listview에 표시가 강조 표시됩니다. 하지만 이제 선택 (pos)을 설정하면 Sit가 화면 상단으로 이동하게됩니다. –

3

ListView의 특정 색인에서 초점/색상을 설정하려면이 방법을 사용해보십시오. .

list.post(new Runnable() { 
    @Override 
    public void run() { 
     list.setSelected(true); 
     list.getChildAt(0).setBackgroundColor(Color.BLACK); 
     list.getChildAt(1).setBackgroundColor(Color.BLUE); 
     firstListItemPosition = firstListItemPosition +1; 
     Log.v("firstListItemPosition", "firstListItemPosition "); 
    }     
}); 


firstListItemPosition = list.getFirstVisiblePosition(); 
관련 문제