2011-12-09 4 views
1

일부 버튼과 ListView 위젯으로 정의 된 레이아웃이 있습니다. 또한 ListView의 각 행에 2 개의 TextViews가 정의 된 레이아웃 XML이 있습니다. String[]에 3 개의 항목이있는 List<String[]> 형식의 데이터도 있습니다. ListView 레이아웃의 TextView 행 중 하나에 할당 된 String 배열 (목록의 각 요소에 포함 된)의 3 개 항목 중 2 개를 사용하여 ListView에 데이터를 표시하려고합니다.사용자 정의 레이아웃 ListView에 배열 목록의 데이터를 채우는 방법

기본 뷰 중 하나를 사용하여 ListView를 가져 와서 배열의 단일 항목의 전체 목록을 단일 값 배열로 분할하고 ArrayAdapter<String>을 사용하여 표시 할 수 있지만 잘 모르겠습니다. ListView 레이아웃에서 여러 행을 처리하는 방법.

많은 도움을 주실 수 있습니까?

또한 원래 List<String[]> 목록의 데이터가 변경되어야하는 경우 어떻게 ListView 위젯을 새로 고칠 수 있습니까?

어떤 조언을 주셔서 감사합니다.

답변

1

이 링크가 도움이 생각 :

class MyAdapter extends ArrayAdapter<String[]>{ 
     public MyAdapter(Context context, int textViewResourceId, ArrayList<String[]> objects) { 
      super(context, textViewResourceId, objects); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      if(convertView== null) convertView = getLayoutInflater().inflate(R.layout.your_layout, null); 

      String[] strings = getItem(position); 
      TextView line1 = (TextView)convertView.findViewById(R.id.line1); 
      line1.setText(strings[0]) 
      TextView line2 = (TextView)convertView.findViewById(R.id.line2); 
      line2.setText(strings[0]) 
      //... 

      return convertView; 
     } 
    } 

, 당신의 목록을 새로 고치 어댑터를 notifyDataSetChanged() 방법을 호출합니다.

+0

FYI : 불과 며칠 만에 세 번 째 "직접 어댑터 만들기"와 관련하여 질문에 대답했습니다. p – Jave

+0

환상적인, 고맙습니다. 나는 내가 언급 했어야한다고 생각한다. 나는 안드로이드 코딩 (그리고 사실 자바)에 완전히 익숙하다. 그래서 내가 검색을 했음에도 불구하고, 나는 틀린 것을 찾고 있었다. 어쨌든, 응답 시간을내어 주셔서 감사합니다. 빠른 포인트, 여기에'return layout '이 있는데, 그것을 return convertView로 변경해야만했습니다. 이 뷰를 새로 고칠 수있는 방법에 대한 힌트는 기본 데이터가 변경되었을 때 액티비티의 다른 버튼을 말하는 것입니까? –

+0

내 대답을 편집하여 작은 레이아웃 문제를 수정했습니다. (뷰가 ​​아닌 레이아웃이라면 레이아웃에 새 레이아웃을 추가하는 경향이 있습니다 ...)) 행운을 빌어 요 프로그래밍 :) – Jave

관련 문제