2010-04-18 6 views
16

데이터베이스의 레코드를 통해 채워지는 목록보기가 있습니다. 이제 일부 레코드를 볼 수는 있지만 선택할 수 없도록 설정해야합니다. 어떻게하면됩니까?목록보기에서 항목을 비활성화하는 방법은 무엇입니까?

여기에 다음과 같이

public class SomeClass extends ListActivity { 
    private static List<String> products; 
    private DataHelper dh; 
    public void onCreate(Bundle savedInstanceState) { 
     dh = new DataHelper(this); 
     products = dh.GetMyProducts(); /* Returns a List<String>*/ 
     super.onCreate(savedInstanceState); 
     setListAdapter(new ArrayAdapter<String>(this, R.layout.myproducts, products)); 
     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 
     lv.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
       // TODO Auto-generated method stub 
       Toast.makeText(getApplicationContext(), ((TextView) arg1).getText(), Toast.LENGTH_SHORT).show(); 
      } 
     }); 
    } 
} 

레이아웃 파일 myproducts.xml이 내 코드입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    android:textSize="16sp"> 
</TextView> 

답변

31

를 true를 반환하는 isEnabled(int position)AreAllItemsEnabled() 반환 거짓이 ArrayAdapter와의 자신의 서브 클래스를 확인하고 정의/데이터 세트의 지정된 항목에 대해 false입니다.

+13

이 해결책에주의하십시오. BaseAdapter의 설명서에는 다음과 같이 나와 있습니다. "지정된 위치에있는 항목이 구분 기호가 아닌 경우 true를 반환합니다." 즉, false를 반환하면 항목이 구분 항목입니다. 일부 휴대 전화에서는 일반 항목과 구분 항목간에 Android 분할자를 그릴 수 없습니다. – Janusz

+2

그건 분명히 사실이고 전에 그 문제에 부딪 혔습니다. 나는 행 레이아웃 자체에 구분선을 포함하고 getView()에 숨 겼거나 숨 겼거나 항목을 사용 가능하게 설정했지만 클릭을 무시하고 눌린 상태가 아닌 배경을 설정하여 보이지 않게했습니다 클릭 가능. –

+0

목록에 섹션이 포함되도록 "제목"칸을 배치하는 것이 좋습니다! – htafoya

관련 문제