2012-12-08 37 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

但我想做到這一點在列表視圖 –

+0

然後使用自定義適配器'ListView'並使用自定義佈局的每一行,您可以在每一行中做兩列。 –

回答

1

是的,你做的沒錯,但在你的getView()代碼中還有一件事要做。使用兩個columns將您的row佈局分爲row,並在getView()函數中同時填充columns。這將使你的ListView成爲一個兩列的列表。

+0

如何插入兩列?對不起,我是Android開發新手。 –

+0

oOh只需粘貼你的XML行然後我會修改它看起來像一個兩列的行:) –

+0

我在我的帖子上面添加了我的breakfast_listview_header佈局。 –