2013-02-27 6 views
0

나는 안드로이드에 새로운 그리고 난 다음 코드가 작동하지 않는 이유를 이해하기 위해 노력하고있어 :() 및 어댑터

... 

    matList = (ListView) findViewById(android.R.id.list); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_multiple_choice, mats); 
    matList.setAdapter(adapter); 
    matList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    matList.setOnItemClickListener(this); 

    CheckedTextView v =(CheckedTextView) adapter.getView(1, null, null); 
        v.setText("n1"); 

결코 변경되지 가져옵니다 특정 라인의 텍스트. 나는이 같은 항목에 클릭을 수행하여 그것을 할 수있는 또 다른 방법을 발견 (위에서 계속) :

그것은 작동
matList.performItemClick(adapter.getView(i, null, matList), 2, 2); 
} 

public void onItemClick(AdapterView<?> arg0, View v, int p, long arg3) { 

    CheckedTextView mat = (CheckedTextView) v; 
    mat.setText("n2"); 
} 

은 ... ListView에의 두 번째 줄 첫 번째 줄은을 유지하면서 "N2"가 같은 ...하지만 웬일인지 그것을하는 것은 바른 길로 보이지 않는다. 내가 할 수있는 한 많이 검색했지만 아무 것도 찾을 수 없었습니다. 첫 번째 방법이 효과가없는 이유를 이해하도록 도와주세요.

+0

당신이'adapter.getView을 수행하여 텍스트를 설정하려는 이유를 이해하지 않습니다()'. 당신은 어쨌든'getView()'를 호출해서는 안된다. 표시 할 데이터는'mats' 배열에 포함되어야합니다. – m0skit0

답변

0
CheckedTextView v =(CheckedTextView) adapter.getView(1, null, null); 
       v.setText("n1"); 

이 당신의 목적을 위해 정확하지 않습니다, 당신은 getView를 호출하지 않는, getView는 당신에게의 ListView에 보여 주었다에보기를 반환하는 어댑터에 의해 호출된다; 원하는 경우 ArrayAdapter를 확장하여 사용자 지정 어댑터를 만드는 경우 getView을 재정의 할 수 있습니다 (예 :).

You can have a look at this link

+0

나는 그것을 모두 잘못했다 ... 고맙습니다. :) – QQsas