2012-12-08 2 views
0

2 열의 식사와 서빙이 있으며 listview에 표시하고 싶습니다. 여기 목록보기의 2 열 표시 android

는 지금까지 시도했습니다 내용은 다음과 같습니다

private ListView lv; 
//private ArrayList<String> results = new ArrayList<String>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
// TODO Auto-generated method stub 
super.onCreate(savedInstanceState); 
setContentView(R.layout.meal_result); 
BreakFastLog info = new BreakFastLog(this); 
info.open(); 

String data1 = info.getMealNameData(); 
String data2 = info.getServingData(); 

String[] inputData = data1.split(" "); 
String[] inputData2 = data2.split(" "); 

lv = (ListView) findViewById (R.id.lvBF); 

ArrayList<HashMap<String, String[]>> mylistData = 
     new ArrayList<HashMap<String, String[]>>(); 

int[] columnIds = new int[] { 
     R.id.tvBreakfastMealContainer, R.id.tvBreakfastServingContainer}; 

HashMap<String, String[]> map = new HashMap<String, String[]>(); 
//initialize row data 

map.put("Meal", inputData); 
map.put("Serving", inputData2); 
mylistData.add(map); 

//lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, inputData)); 

SimpleAdapter arrayAdapter = 
      new SimpleAdapter(this, mylistData, R.layout.breakfast_listview_header, 
        new String[] {"Meal", "Serving"}, columnIds); 
lv.setAdapter(arrayAdapter); 

lv.setTextFilterEnabled(true); 

info.close(); 
} 

편집 :

class MyCustomAdapter extends BaseAdapter 
{ 

     String[] data_meal; 
     String[] data_serving; 

MyCustomAdapter() 
{ 
     data_meal = null; 
     data_serving = null; 
} 

MyCustomAdapter(String[] meal, String[] serving) 
{ 
     data_meal = meal; 
     data_serving = serving; 
} 

public int getCount() 
{ 
     return data_meal.length; 
} 

public String getItem(int position) 
{ 
     return null; 
} 

public long getItemId(int position) 
{ 
     return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) 
{ 

     LayoutInflater inflater = getLayoutInflater(); 
     View row; 

     row = inflater.inflate(R.layout.breakfast_listview_header, parent, false); 

     TextView txtMeal = (TextView) row.findViewById (R.id.tvBreakfastMealContainer); 
     TextView txtServing = (TextView) row.findViewById (R.id.tvBreakfastServingContainer); 

     txtMeal.setText(data_meal[ position ]); 
     txtServing.setText(data_serving[ position ]); 

     return (row); 

    } 
} 

편집 : XML : 그들은 단지 하나에서만 표시되는

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" 
android:background="@drawable/ihealthfirst" > 

<!-- 
    <TextView 
     android:id="@+id/tvBreakfastDateContainer" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:layout_weight="1" /> --> 

    <TextView 
     android:id="@+id/tvBreakfastMealContainer" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:layout_weight="2" /> 

    <TextView 
     android:id="@+id/tvBreakfastServingContainer" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="50dp" 
     android:gravity="center_horizontal" 
     android:layout_weight="1" /> 


</LinearLayout> 

그러나 열? 해당 레코드를 개별적으로 표시하는 방법을 알아내는 데 도움이됩니다. 감사.

+0

여러 열에 대해'GridView'를 사용할 수 있습니다. –

+0

하지만 Listview에서 수행하고 싶습니다. –

+0

그런 다음 ListView에 사용자 정의 어댑터를 사용하고 각 행에 두 개의 열을 만들 수있는 각 행마다 맞춤 레이아웃을 사용하십시오. –

답변

1

예, 올바르게 작동하고 있지만 getView() 코드에는 할 일이 하나 더 있습니다. row 레이아웃을 columnsrow으로 만들고 columns을 모두 getView() 함수로 동시에 채 웁니다. 그러면 ListView은 두 개의 열로 나뉩니다.

+0

어떻게 두 개의 열을 삽입합니까? 죄송합니다. Android 개발자가 처음입니다. –

+0

oOh 그냥 XML 행에 붙여 넣은 다음 두 열 행처럼 보이게 수정합니다 :) –

+0

위의 게시물에서 내 breakfast_listview_header 레이아웃을 추가했습니다. –

관련 문제