我有一个ListView
,包括已预约的约会和未预约的约会,我可以在点击时更改颜色,但我想知道如何更改默认预订的颜色。
当获取数据并在列表视图中显示时,预订和未预订应以不同颜色显示。是否可能?
有人可以帮帮我吗? 提前致谢! 只需一个指导即可!
答案 0 :(得分:3)
您应该按照以下步骤操作。
您首先需要在数据库中使用1列,您可以在其中检查约会的状态,即预订或未预订[预期布尔字段],或者如果varchar列的状态超过两种,则可以使用ENUM。
之后,您需要将数据表格数据库获取到数组适配器。
Class MyAdaptor extends ArrayAdaptor<YourEntityClass>{
...............
}
之后,如果使用自定义适配器,则需要覆盖数组适配器类中的getView方法。
public View getView(int position, View convertView, ViewGroup parent){
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.Your_TextView_File, parent, false);
........
return rowView;
}
现在在getView中检查if(object.getAppoinmentStatus == true)是否显示某些更改,否则显示一些更改。
final YourEntityClass a = getItem(position);
if(a.getAppoinmentStatus == true){
//Change required text color
}else{
//Default
}
Get On item点击类
中的监听器 public class ListActivity extends Activity{
private MyAdaptor adaptor;
private ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
super.onCreate(savedInstanceState);
setContentView(R.layout.YourActivityLayout);
adaptor = new MyAdaptor(this);
lv = (ListView)findById(R.id.YourListView);
onItemClickListener();
}
public void onItemClickListener(){
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {
if (adaptor.getItem(i).getAppoinmentStatus() == 0){
//Do Some Work
}else{
//Do some Work
}
}
}
这可能会对您有所帮助
答案 1 :(得分:0)
您可以在显示之前检查Adapter
类中的数据类型。为预订和未预订的数据设置一点。在将数据设置为ListView
之前检查该位并相应地更改颜色。请参阅下面的内容代码段。
在这里,status
是可以通过构造函数传递其值的位。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if (status == 1) {
view.setBackgroundColor(Color.BLUE);
} else {
view.setBackgroundColor(Color.CYAN);
}
return view;
}
答案 2 :(得分:0)
在适配器方法的getView()中尝试类似这样的事情,
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ListContent holder;
View v = convertView;
if (v == null) {
v = mInflater.inflate(R.layout.row_list_item, parent, false);
holder = new ListContent();
holder.line_main = (LinearLayout) v.findViewById(R.id.line_main);
v.setTag(holder);
} else {
holder = (ListContent) v.getTag();
}
Model pi = arrayModelList.get(position);
if (pi.getFlag() == 1) {
holder.line_main.setBackgroundColor(ContextCompat.getColor(YourActivity.this, R.color.colorPrimaryDark));
} else if (pi.getFlag() == 2) {
holder.line_main.setBackgroundColor(ContextCompat.getColor(YourActivity.this, R.color.colorPrimary));
} else {
holder.line_main.setBackgroundColor(ContextCompat.getColor(YourActivity.this, R.color.colorLightPrimary2));
}
return v;
}
在你的模型类中为flag生成getter和setter方法,
private int flag;//1 = boxed,2 = unboxed
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}