0

我刚开始使用 Android,我在网上搜索我找不到我的问题的解决方案:

我有一个哈希图,其中键是课程名称,值是截止日期前的天数。我想从这个哈希图中列出一个列表,如果我有不到 1/2 天,则该项目的背景颜色为红色,否则为绿色。

我开始使用阵列适配器,但找不到解决方案:

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

    setListAdapter(adapter);

目前“values”只是一个带有课程名称的数组。我现在正在查看 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)。

我无法理解自定义适配器的工作原理,也是因为我无法在主要活动中对其进行测试!

4

1 回答 1

0

您应该通过扩展 ArrayAdapter 创建自定义适配器,然后编写自己的 getView() 方法。

在评论中请求后的附加信息

任何适配器大致做的是:它为每个项目获取您的 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的示例,但您会明白的。这并不难。

于 2013-02-09T14:56:28.290 回答