2014-05-19 7 views
0

xml Tablelayout에서 만든 테이블이 10 개 이상 있으며 을 ScrollView가 아닌 ​​ListView에 넣으려고합니다. 테이블은 편집 할 수없고 정보 만위한 것입니다 ... 어댑터에 데이터 소스를 넣는 방법 또는 내가 팽창해야합니까? tnx 및 noobish q에 대해 사과드립니다.ListView에 TableLayout을 표시하는 방법이 있습니까

답변

0

ListView 행 레이아웃 xml에 TableLayout을 추가하기 만하면됩니다. 내 현재 응용 프로그램에서

예 :

public class DistributorsListAdapter extends ArrayAdapter<String>{ 
private final Context context; 
private final int rowResourceId; 
private final JSONArray data; 

public DistributorsListAdapter(Context context, int rowResourceId, String[] ids, JSONArray data) { 
     super(context, rowResourceId, ids); 

     this.context = context; 
     this.rowResourceId = rowResourceId; 
     this.data = data; 
} 

@Override 
public View getView(int position, View v, ViewGroup parent) { 

    LayoutInflater inflater = (LayoutInflater) context.getSystemService(
     Context.LAYOUT_INFLATER_SERVICE); 

    View rowView = inflater.inflate(rowResourceId, parent, false); 

    try { 
     JSONObject rowData = data.getJSONObject(position); 

     // Заполняем данными строку списка 
     setHTMLData(rowView, rowData, "name", R.id.distributor_table_title); 
     setHTMLData(rowView, rowData, "address", R.id.distributor_address); 
     setData(rowView, rowData, "website", R.id.distributor_website); 
     setData(rowView, rowData, "phone", R.id.distributor_phone); 
     setData(rowView, rowData, "fax", R.id.distributor_fax); 
     setData(rowView, rowData, "email", R.id.distributor_email); 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    return rowView; 
} 

private void setData(View v, JSONObject data, String key, int textViewId) throws JSONException{ 
    TextView tv = (TextView) v.findViewById(textViewId); 
    tv.setText(data.getString(key)); 
} 

private void setHTMLData(View v, JSONObject data, String key, int textViewId) throws JSONException{ 
    TextView tv = (TextView) v.findViewById(textViewId); 
    tv.setText(Html.fromHtml(data.getString(key))); 
} 

}리스트 뷰 행의

XML 레이아웃 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:paddingLeft="@dimen/activity_horizontal_padding" 
android:paddingRight="@dimen/activity_horizontal_padding" 

android:paddingBottom="@dimen/distributor_table_vertical_padding"> 

<TextView 
    android:id="@+id/distributor_table_title" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="@dimen/distributor_table_vertical_padding" 
    android:gravity="center_horizontal" 
    android:textSize="@dimen/distributor_table_title_text_size" 
    android:textStyle="bold"/> 

<TableLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" > 

    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/distributor_address" 
      android:textSize="@dimen/distributor_table_text_size"/> 

     <TextView 
      android:id="@+id/distributor_address" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="@dimen/distributor_table_text_size" 
      android:layout_marginLeft="@dimen/distributor_table_columns_margin"/> 
    </TableRow> 

    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/distributor_website" 
      android:textSize="@dimen/distributor_table_text_size"/> 

     <TextView 
      android:id="@+id/distributor_website" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="@dimen/distributor_table_text_size" 
      android:layout_marginLeft="@dimen/distributor_table_columns_margin"/> 
    </TableRow> 

    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/distributor_phone" 
      android:textSize="@dimen/distributor_table_text_size"/> 

     <TextView 
      android:id="@+id/distributor_phone" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="@dimen/distributor_table_text_size" 
      android:layout_marginLeft="@dimen/distributor_table_columns_margin"/> 
    </TableRow> 

    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/distributor_fax" 
      android:textSize="@dimen/distributor_table_text_size"/> 

     <TextView 
      android:id="@+id/distributor_fax" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="@dimen/distributor_table_text_size" 
      android:layout_marginLeft="@dimen/distributor_table_columns_margin"/> 
    </TableRow> 

    <TableRow> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/distributor_email" 
      android:textSize="@dimen/distributor_table_text_size"/> 

     <TextView 
      android:id="@+id/distributor_email" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="@dimen/distributor_table_text_size" 
      android:layout_marginLeft="@dimen/distributor_table_columns_margin"/> 
    </TableRow> 

</TableLayout> 

</LinearLayout> 
리스트 뷰에 대한 사용자 정의 어댑터를 작성해야
1


는 (검색하시기 바랍니다 이). 어댑터를 사용하면 ListView 항목 레이아웃을 만들어야합니다. 여기에서 목록보기의 각 행에 대해 테이블을 정의 할 수 있습니다.
희망이 도움이됩니다. :)

관련 문제