我有一个ListView,我想更改它的Backgroundcolor。它应该是这样的。 1.Item =灰色; 2.项目;白色; 3.项目=灰色; 4.项目=白色等所以它应该有2个背景颜色。我试图在近2个小时内完成这项任务。我很困惑。我无法找到解决方案。我希望你们中的某个人可以帮助我。
我尝试过:
for(int counter = 0; counter < itemList.size(); counter++){
if( adapter.getItem(position) %2 == 1 ){
Layout.setBackgroundColor(Color.GREY)
};
else{
Layout.setBackgroundColor(Color.WHITE);
}
所以这是我的漏洞代码。我希望有人能告诉我:
MainActivity
public class MainActivity extends Activity implements OnItemClickListener {
ListView lview3;
ListViewCustomAdapter adapter;
private ArrayList<Object> itemList;
private ItemBean bean;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
prepareArrayLits();
lview3 = (ListView) findViewById(R.id.listView1);
adapter = new ListViewCustomAdapter(this, itemList);
lview3.setAdapter(adapter);
lview3.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
// TODO Auto-generated method stub
RelativeLayout Layout = (RelativeLayout) findViewById(R.id.relativeLayout1);
ItemBean bean = (ItemBean) adapter.getItem(position);
for(int counter = 0; counter < itemList.size(); counter++){
adapter.getItem(position);
Layout.setBackgroundColor(Color.CYAN);}
Toast.makeText(this, "Title => "+bean.getTitle()+" \n Description => "+bean.getDescription(), Toast.LENGTH_SHORT).show();
}
/* Method used to prepare the ArrayList,
* Same way, you can also do looping and adding object into the ArrayList.
*/
public void prepareArrayLits()
{
itemList = new ArrayList<Object>();
AddObjectToList(R.drawable.ic_add, "add", "Add desc", "2");
AddObjectToList(R.drawable.ic_delete, "Delete", "Delete desc", "2");
AddObjectToList(R.drawable.ic_down, "Down", "Down desc", "2");
AddObjectToList(R.drawable.ic_info, "Information", "Information desc", "2");
AddObjectToList(R.drawable.ic_help, "Help", "Help desc", "2");
AddObjectToList(R.drawable.ic_download, "Download", "Download desc", "2");
AddObjectToList(R.drawable.ic_mail, "Mail", "Mail desc", "2");
AddObjectToList(R.drawable.ic_search, "Search", "Search desc", "2");
AddObjectToList(R.drawable.ic_settings, "Settings", "Settings desc", "2");
}
// Add one item into the Array List
public void AddObjectToList(int image, String title, String desc, String duration)
{
bean = new ItemBean();
bean.setduration(duration);
bean.setDescription(desc);
bean.setImage(image);
bean.setTitle(title);
itemList.add(bean);
}
}
ItemBean
public class ItemBean
{
String title;
String description;
int image;
String duration;
public String getTitle() {
return title;
}
public String getDuration() {
return duration;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
public void setduration(String duration) {
this.duration = duration;
}
}
ListViewCustomAdapter
public class ListViewCustomAdapter extends BaseAdapter{
ArrayList<Object> itemList;
public Activity context;
public LayoutInflater inflater;
public ListViewCustomAdapter(Activity context,ArrayList<Object> itemList) {
super();
this.context = context;
this.itemList = itemList;
this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
// TODO Auto-generated method stub
return itemList.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return itemList.get(position);
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
public static class ViewHolder
{
ImageView imgViewLogo;
TextView txtViewTitle;
TextView txtViewDescription;
TextView duration;
}
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView==null)
{
holder = new ViewHolder();
convertView = inflater.inflate(R.layout.items, null);
holder.imgViewLogo = (ImageView) convertView.findViewById(R.id.imgViewLogo);
holder.txtViewTitle = (TextView) convertView.findViewById(R.id.txtViewTitle);
holder.txtViewDescription = (TextView) convertView.findViewById(R.id.txtViewDescription);
holder.duration = (TextView) convertView.findViewById(R.id.duration);
convertView.setTag(holder);
}
else
holder=(ViewHolder)convertView.getTag();
ItemBean bean = (ItemBean) itemList.get(position);
holder.imgViewLogo.setImageResource(bean.getImage());
holder.txtViewTitle.setText(bean.getTitle());
holder.txtViewDescription.setText(bean.getDescription());
holder.duration.setText(bean.getDuration());
return convertView;
}
}
XML布局: * 项 *
<RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/list_selector" xmlns:android="http://schemas.android.com/apk/res/android" android:padding="5dip">
<ImageView
android:layout_width="50dip"
android:layout_height="50dip"
android:padding="3dip"
android:id="@+id/imgViewLogo"
android:src="@drawable/icon"
android:layout_alignParentLeft="true"
android:layout_centerInParent="true"
android:background="@drawable/image_bg"
android:layout_marginRight="5dip"
android:scaleType="center"
>
</ImageView>
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/imgViewLogo"
android:text="TextView"
android:layout_width="wrap_content"
android:id="@+id/txtViewTitle"
android:layout_toRightOf="@+id/imgViewLogo"
android:textColor="#040404"
android:typeface="sans"
android:textSize="20dip"
android:textStyle="bold"
android:layout_marginRight="15dp"
>
</TextView>
<TextView
android:layout_height="wrap_content"
android:text="TextView"
android:layout_width="wrap_content"
android:id="@+id/txtViewDescription"
android:textColor="#343434"
android:textSize="15dip"
android:layout_marginTop="1dip"
android:layout_toRightOf="@+id/imgViewLogo"
android:layout_below="@+id/txtViewTitle"
android:layout_marginLeft="2dip"
android:layout_marginRight="15dp"
>
</TextView>
<TextView
android:id="@+id/duration"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/txtViewTitle"
android:gravity="right"
android:layout_marginRight="5dip"
android:textSize="15dip"
android:textColor="#10bcc9"
android:textStyle="bold"/>
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/arrow"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>
布局: * 主 *
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ListView
android:id="@+id/listView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:divider="#b5b5b5"
android:dividerHeight="1dp"
android:listSelector="@drawable/list_selector"
/>
</LinearLayout>
每个提示都会有所帮助, 感谢。
答案 0 :(得分:12)
不要使用for
循环来设置事后的背景颜色。在适配器的getView
方法中执行此操作。试试这个:
public View getView(int position, View convertView, ViewGroup parent) {
/* remainder is unchanged */
convertView.setBackgroundColor(position % 2 == 0 ? Color.WHITE : Color.GREY);
return convertView;
}
答案 1 :(得分:3)
这是使用选择器切换器更改背景的另一种方法。 使用此方法将保留选择器的悬停和焦点颜色。
Team:
team_id
team_name
division
答案 2 :(得分:0)
您可以通过在自定义适配器的getView函数中设置背景来轻松完成此操作。
试试这段代码:
if(position % 2 == 0)
convertView.setBackgroundColor(Color.GREY);
else
convertView.setBackgroundColor(Color.WHITE);
答案 3 :(得分:0)
您可以根据传入的项目位置从getView返回不同的视图。
答案 4 :(得分:-1)
我相信你可以根据职位
来做到这一点 if (position == 0)
{
view.SetBackgroundColor(Android.Graphics.Color.gray);
}
else if (position == 1)
{
view.SetBackgroundColor(Android.Graphics.Color.white);
}
等取决于您拥有多少个职位。