Android ListView在创建时设置行颜色
我试图为listview中的各行设置背景颜色,我在运行时从数据库中检索颜色的信息,我在试图找出如何做到这一点时遇到了一些问题 当我试图在onCreate中访问listview,以便更改颜色时,我不断出错。有人能想出解决办法吗 提前谢谢Android ListView在创建时设置行颜色,android,listview,colors,background,row,Android,Listview,Colors,Background,Row,我试图为listview中的各行设置背景颜色,我在运行时从数据库中检索颜色的信息,我在试图找出如何做到这一点时遇到了一些问题 当我试图在onCreate中访问listview,以便更改颜色时,我不断出错。有人能想出解决办法吗 提前谢谢 @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub s
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.item_list);
// Read var from Intent
Intent intent= getIntent();
final String ListID = intent.getStringExtra("ListID");
golbalItemID = ListID;
ivAdd = (ImageView) findViewById(R.id.ivAdd);
ivCancel = (ImageView) findViewById(R.id.ivCancel);
tvTotItems = (TextView) findViewById(R.id.tvTotItems);
final myDBClass myDb = new myDBClass(this);
final ArrayList<HashMap<String, String>> MebmerList = myDb.SelectAllItemData(ListID);
myData = myDb.SelectItemData(Integer.parseInt(ListID.toString()));
// listView1
final ListView lisView1 = (ListView)findViewById(R.id.listView1);
registerForContextMenu(lisView1);
SimpleAdapter sAdap;
sAdap = new SimpleAdapter(ListItems.this, MebmerList, R.layout.activity_column,
new String[] {"Name", "Price", "Quan"}, new int[] {R.id.ColName, R.id.ColTel, R.id.ColQuan});
lisView1.setAdapter(sAdap);
lisView1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> myAdapter, View myView, int position, long mylng) {
int iChk = 0;
// Show Data
String arrData[] = myDb.SelectItemData((MebmerList.get(position).get("ItemID").toString()));
if(arrData != null)
{
iChk = Integer.parseInt(arrData[4]);
}
if(iChk == 1)
{
ischkCheck(Integer.parseInt(MebmerList.get(position).get("ItemID").toString()), 0);
change_color(lisView1, position, 255, 255, 255);
System.out.println("POSITION!ichk=1" + myAdapter.getItemAtPosition(position).toString());
setTitle(myAdapter.getItemAtPosition(position).toString());
}
else if(iChk == 0)
{
ischkCheck(Integer.parseInt(MebmerList.get(position).get("ItemID").toString()), 1);
change_color(lisView1, position, 155, 155, 138);
System.out.println("POSITION!ichk=0" + myAdapter.getItemAtPosition(position).toString());
}
}});
ivAdd.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent newActivity = new Intent(ListItems.this,AddItem.class);
newActivity.putExtra("ListID", ListID);
startActivity(newActivity);
finish();
}
});
ivCancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent newActivity = new Intent(ListItems.this,MenuScreen.class);
startActivity(newActivity);
finish();
}
});
@覆盖
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
requestWindowFeature(窗口。功能\u无\u标题);
setContentView(R.layout.item_列表);
//从Intent读取var
Intent=getIntent();
最终字符串ListID=intent.getStringExtra(“ListID”);
golbalItemID=ListID;
ivAdd=(ImageView)findViewById(R.id.ivAdd);
ivCancel=(ImageView)findViewById(R.id.ivCancel);
tvTotItems=(TextView)findViewById(R.id.tvTotItems);
最终myDBClass myDb=新的myDBClass(此);
final ArrayList MebmerList=myDb.SelectAllItemData(ListID);
myData=myDb.SelectItemData(Integer.parseInt(ListID.toString());
//列表视图1
最终ListView lisView1=(ListView)findViewById(R.id.listView1);
registerForContextMenu(lisView1);
SimpleDapter-sAdap;
sAdap=新的SimpleAdapter(ListItems.this、MebmerList、R.layout.activity_列、,
新字符串[]{“Name”、“Price”、“Quan”},新int[]{R.id.ColName,R.id.ColTel,R.id.ColQuan});
lisView1.setAdapter(sAdap);
lisView1.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView myAdapter、View myView、int position、long mylng){
int-iChk=0;
//显示数据
字符串arrData[]=myDb.SelectItemData((MebmerList.get(position.get(“ItemID”).toString());
如果(arrData!=null)
{
iChk=Integer.parseInt(arrData[4]);
}
if(iChk==1)
{
ischkCheck(Integer.parseInt(MebmerList.get(position.get(“ItemID”).toString()),0);
更改颜色(lisView1,位置,255,255,255);
System.out.println(“POSITION!ichk=1”+myAdapter.getItemAtPosition(POSITION.toString());
setTitle(myAdapter.getItemAtPosition(position.toString());
}
else if(iChk==0)
{
ischkCheck(Integer.parseInt(MebmerList.get(position.get(“ItemID”).toString()),1);
改变颜色(lisView1,位置,155,155,138);
System.out.println(“POSITION!ichk=0”+myAdapter.getItemAtPosition(POSITION.toString());
}
}});
ivAdd.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
Intent newActivity=newintent(ListItems.this,AddItem.class);
newActivity.putExtra(“ListID”,ListID);
星触觉(新活动);
完成();
}
});
ivCancel.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图v){
Intent newActivity=newintent(ListItems.this,MenuScreen.class);
星触觉(新活动);
完成();
}
});
如果使用自己的适配器更简单,请重写getView();
方法(您只需调用super.getView();
,然后在返回视图之前设置自己的背景色
public class MyAdapter extends SimpleAdapter {
@Override
View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView( position, convertView, parent );
view.setBackgroundColor( 0xff00ff00 );
return view;
}
}
应该使您的行变为绿色。我实现了您所说的代码,并用它替换了适配器,没有颜色变化。MyAdapter sAdap;sAdap=new MyAdapter(ListItems.this,MebmerList,R.layout.activity_列,新字符串[]{“Name”,“Price”,“Quan”},新int[]{R.id.ColName,R.id.ColTel,R.id.ColQuan})lisView1.setAdapter(sAdap);