我是android开发的新手,我遇到了一个问题,我有一个listview
使用数组适配器填充,我想在listview
中创建奇数行(项)例如,'red'的颜色和偶数行的颜色为'yellow'!我怎么能做到这一点?
这是代码onCreate()
方法: -
//defining list view
listView = (ListView)findViewById(R.id.listView);
//defining data array list to store retrieved data from database
data = new ArrayList<String>();
adapter=new ArrayAdapter<String(this,android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
onPostExecute()
方法: -
protected void onPostExecute(ArrayList<ProductionCommentsTable> result) {
// TODO Auto-generated method stub
for (int i = 0; i < result.size(); i++) {
data.add("Date: " + result.get(i).getDate().substring(0, 10) + newline + newline +
"Item: " + result.get(i).getItem() + newline + newline +
result.get(i).getComments());
if ( i % 2 == 0) {
listView.setBackgroundColor(Color.RED);
} else {
listView.setBackgroundColor(Color.YELLOW);
}
}
adapter.notifyDataSetChanged();
提前致谢...
答案 0 :(得分:2)
您需要使用自定义子布局创建自定义适配器。
在getView(...)
方法中你必须写出你的逻辑。
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate("your layout", parent, false);
holder.backgroundView= (RelativeLayout) convertView.findViewById("Your Background View");
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//Your color logic
if ( position % 2 == 0) {
holder.backgroundView.setBackgroundColor(Color.RED);
} else {
holder.backgroundView.setBackgroundColor(Color.YELLOW);
}
return convertView;
}
以上代码仅供参考而非完整代码,根据您的需要进行更改
答案 1 :(得分:1)
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_1, fruits_list){
@Override
public View getView(int position, View convertView, ViewGroup parent){
// Get the current item from ListView
View view = super.getView(position,convertView,parent);
if(position %2 == 1)
{
// Set a background color for ListView regular row/item
view.setBackgroundColor(Color.parseColor("#FFB6B546"));
}
else
{
// Set the background color for alternate row/item
view.setBackgroundColor(Color.parseColor("#FFCCCB4C"));
}
return view;
}
};
答案 2 :(得分:0)
这是你怎么做的: 首先,创建一个扩展BaseAdapter的CustomList类:
public class ListCompaniesAdapter extends BaseAdapter {
public List<String> items;
Context c;
public ListCompaniesAdapter(Context c,List<String> items){
this.c=c;
this.items=items;
}
@Override
public int getCount() {
return items.size();
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater mInflater = (LayoutInflater)
c.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
// Your layout here should be RelativeLayout with a textview as a child
convertView = mInflater.inflate(R.layout.industry_item, null);
}
title=(TextView) convertView.findViewById(R.id.name);
title.setText(items.get(position));
if ( position % 2 == 0) {
convertView.backgroundView.setBackgroundColor(Color.RED);
} else {
convertView .backgroundView.setBackgroundColor(Color.YELLOW);
}
return convertView;
}
}
现在,在你的帖子中执行这就是你的工作方式:
protected void onPostExecute(ArrayList<ProductionCommentsTable> result) {
// TODO Auto-generated method stub
for (int i = 0; i < result.size(); i++) {
data.add("Date: " + result.get(i).getDate().substring(0, 10) + newline + newline +
"Item: " + result.get(i).getItem() + newline + newline +
result.get(i).getComments());
}
adapter.notifyDataSetChanged();
这是onCreate:
listView = (ListView)findViewById(R.id.listView);
//defining data array list to store retrieved data from database
data = new ArrayList<String>();
adapter=new ListCompaniesAdapter(this,data);
listView.setAdapter(adapter);