2013-02-09 71 views
0

我剛開始使用Android創建一個列表,我在網上搜索,我不能找到一個解決我的問題:與costum背景每個列表項

我有一個HashMap,其中關鍵是名一門課程,價值是截止日期前的天數。如果我有不到半天的時間,我想從這個散列圖中列出項目具有紅色背景顏色的列表,否則它具有綠色。

我開始使用陣列適配器,但我不能找到一個解決的辦法:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    R.layout.list_costum_text, R.id.list_content, values); 

    setListAdapter(adapter); 

目前「價值」只是與課程的名稱的數組。 我現在在看Costum適配器,但我仍然有一些問題,他們

編輯:

如果我遵循vogella我可以做這項工作的教程(我修改的主要活動):

import android.app.ListActivity; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 

public class MainActivity extends ListActivity { 
    public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 

    String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
    "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
    "Linux", "OS/2" }; 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
    R.layout.list_costum_text, R.id.red_list, values); 

setListAdapter(adapter); 




setContentView(R.layout.activity_main); 
} 
} 

其中activity_main.xml是一個ListView佈局,list_costum_text包含兩個編輯文本(一個是red_list)。

我無法理解自定義適配器的工作原理,也因爲我無法在主要活動中對其進行測試!

+0

我已經添加了一些代碼到我的答案 – Tobrun 2013-02-09 21:46:20

回答

0

您應該通過擴展ArrayAdapter來創建自定義適配器,然後編寫自己的getView()方法。

附加信息請求的意見

在After什麼任何適配器大致所做的是:它需要你的XML佈局爲每個項目,膨脹,然後填充與值的UI元素。

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    LayoutInflater inflater = (LayoutInflater) context 
    .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View rowView = inflater.inflate(R.layout.rowlayout, parent, false); 
    TextView textView = (TextView) rowView.findViewById(R.id.label); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    textView.setText(values[position]); 
    // Change the icon for Windows and iPhone 
    String s = values[position]; 
    if (s.startsWith("iPhone")) { 
     imageView.setImageResource(R.drawable.no); 
    } else { 
     imageView.setImageResource(R.drawable.ok); 
    } 
return rowView; 

}

這是剛剛從http://www.vogella.com/articles/AndroidListView/article.html採取了一個例子,但你會得到的想法。這並不難。

+0

非常感謝你,我正在調查getView(),但我真的不明白我應該如何重寫該方法。這似乎令人困惑,並且在線示例沒有闡明 – 2013-02-09 15:24:36

+0

@android_help請仔細看看示例。我補充說。 – Anderson 2013-02-09 15:59:53

+0

非常感謝,我用一些代碼編輯了quesiton – 2013-02-09 19:39:32