2014-06-14 2 views
1
<TextView 
     android:id="@+id/tvLabel1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
<View 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="@android:color/darker_gray" /> 

<TextView 
     android:id="@+id/tvValue1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

활동 (자바)에서이보기 그룹을 반복하고 싶습니다. 또한 각 textview마다 다른 텍스트를 설정해야합니다. 나는 이것을 할 방법이있을 것이라고 생각합니다. 레이아웃에서 여러 textview를 만드는 것은이 문제에 대한 좋은 해결책이 아닙니다. 제발 이걸 이해하도록 도와주세요.활동에서보기 그룹을 반복하는 방법은 무엇입니까?

답변

0

당신은 무엇을 찾고있는 사용자 정의 AdapterListView입니다. 첫 번째 항목은 비슷한 항목의 목록을 표시합니다. 두 번째 것은 객체 목록에 따라이 목록을 채 웁니다.

<TextView 
     android:id="@+id/tvLabel1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 
<View 
     android:layout_width="fill_parent" 
     android:layout_height="1dp" 
     android:background="@android:color/darker_gray" /> 

<TextView 
     android:id="@+id/tvValue1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

그것은 각 항목에 대한 템플릿으로 사용되는 레이아웃 될 것입니다 :

그래서 첫째, listview_row.xlm라는 이름의 XML 파일로 이러한 견해를했습니다.

그런 다음 레이블과 값을 포함 할 것이다 Item 표현하는 객체를 생성 : 이제

public class Item { 
    private String label; 
    private String value; 

    public Item(String label, String value) { 
     this.label = label; 
     this.value = value; 
    } 

    /* Getters and Setters */ 
} 

를, 사용자 정의 Adapter 만들어야합니다 그런 다음

public class MyAdapter extends ArrayAdapter<Item> { 

    private List<Item> items; 
    private Context context; 

    public MyAdapter(Context context, int resource, List<Item> items) { 
     super(context, resource, items); 
     this.items = items; 
     this.context = context; 
    } 

    /* This method creates the items. It basically set TextViews' texts based 
     on the list of items given */ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = LayoutInflater.from(context); 
     View v = inflater.inflate(R.layout.listview_row, null); 

     TextView label = (TextView) v.findViewById(R.id.tvLabel1); 
     TextView value = (TextView) v.findViewById(R.id.tvValue1); 

     Item current = items.get(position); 

     label.setText(current.getLabel()); 
     value.setText(current.getValue()); 

     return v; 
    } 
} 

을에 넣고 기본 레이아웃 :

<ListView 
    android:id="@+id/listview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

마지막으로, 귀하의 엄마

public void setUpListView() { 
    List<Item> items = new ArrayList<Item>(); 
    items.add(new Item("1", "value1")); 
    items.add(new Item("2", "value2")); 

    ListView listView = (ListView) findViewById(R.id.listview); 
    MyAdapter adapter = new MyAdapter(this, R.layout.listview_row, items); 

    listView.setAdapter(adapter); 
} 

편집 : 활동에, 다음과 같은 방법을 생성하고 onCreate 방법의 끝에서 호출

각 항목 사이의 공간을 제거하려면, 당신은 정의에 이러한 속성을 추가해야

android:divider="@null" 
android:dividerHeight="0dp" 
+0

모든 목록 항목 다음에 라이트 라인이 표시되는 이유는 무엇입니까? [Image] (http://imgur.com/S2p9drv) –

+0

이것은 기본적으로 이와 같습니다. 당신은'android : divider = "@ null"'과'android : dividerHeight = "0dp"'를 사용하여 그것을 제거 할 수 있습니다. –

+0

완벽하게 작동합니다. 감사. –

1

Textview, view, textview를 부모 레이아웃 (예 : LinearLayout)에 넣어야합니다. 그런 다음
는 :

LinearLayout parentLayout = (LinearLayout) findViewById(R.id.yourLayout); 
     for (int j = 0; j < parentLayout.getChildCount(); j++) { 
      View v = parentLayout.getChildAt(j); 

      //check and convert to comfortable view 
      //update text 
      //... 

     } 
관련 문제