[英]Create a list with a costum background for every list item
我刚开始使用Android,但是我在网上搜索时找不到解决我问题的方法:
我有一个哈希图,其中的关键是课程的名称,值是截止日期前的天数。 我想从此哈希图中列出一个列表,其中如果我少于1/2天,则该项目的背景颜色为红色,否则为绿色。
我开始使用阵列适配器,但找不到解决方案:
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)。
我无法理解自定义适配器的工作原理,也因为无法在主要活动中对其进行测试!
您应该通过扩展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提取的示例,但您会明白的。 不难
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.