【发布时间】:2017-02-05 14:39:26
【问题描述】:
我正在使用带有两个来自 SQLite 的单独表的数据库,我的 CRUD 操作运行良好。然后我在同一个活动上显示两个列表视图,一个在另一个之上,这也可以正常工作。总之,我遵循了以下步骤:
- 我创建了两个对象类,每个类都有自己的 getter/setter。每个对象类都被赋予了一个来自 SQLite 的表。 SQLite 中的每个表都有 5 列和多行
- 我创建了两个自定义适配器,每个列表视图一个
- 我为显示两个列表视图的活动创建了 xml 布局;每个列表视图也有一个带有文本视图的行布局。
每个列表视图有 6 列。第一列是列表视图中项目/行的位置,其他 5 列包含 SQLite 中各个表中的值。
如果我此时运行应用程序,一切都很完美,我可以看到两个列表视图在另一个之上,显示来自 SQLite 表的数据。
现在我想将 listview2 中的值与 listview1 中的值进行比较。例如,如果 listview2 中 position1/row1、column2 的 textview 与 listview1 中的任何项目相同,则该特定 textview 应该具有不同的背景。
我设法比较了这些值并设置了背景。问题是,如果满足条件并且我从 listview2、position1/row1、column2 设置 textview 的背景,则背景将在 listview2 的整个 column2 上自动更改。
那么如何根据条件以编程方式更改单个文本视图的背景,而不影响同一列表视图中其他行/列的任何其他文本视图?
非常感谢。
编辑 - 添加 ListView2 适配器代码
如前所述,如果满足条件,我可以更改特定文本视图的背景,但是即使列表视图中的其他行不满足条件,整列也会发生这种情况。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ObjectSaved objectSaved = getItem(position);
if(convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row_layout, parent, false);
}
TextView ID_fav = (TextView) convertView.findViewById(R.id.id_favorit);
TextView N1_fav = (TextView) convertView.findViewById(R.id.n1_fav);
TextView N2_fav = (TextView) convertView.findViewById(R.id.n2_fav);
TextView N3_fav = (TextView) convertView.findViewById(R.id.n3_fav);
TextView N4_fav = (TextView) convertView.findViewById(R.id.n4_fav);
TextView N5_fav = (TextView) convertView.findViewById(R.id.n5_fav);
TextView N6_fav = (TextView) convertView.findViewById(R.id.n6_fav);
// Setting the text to display
ID_fav.setText(position + 1 + ".");
N1_fav.setText(ObjectSaved.N1_fav);
N2_fav.setText(ObjectSaved.N2_fav);
N3_fav.setText(ObjectSaved.N3_fav);
N4_fav.setText(ObjectSaved.N4_fav);
N5_fav.setText(ObjectSaved.N5_fav);
N6_fav.setText(ObjectSaved.N6_fav);
DatabaseAccess databaseAccess = DatabaseAccess.getInstance(getContext());
databaseAccess.open();
ArrayList<ObjectDrawingLine> Result = databaseAccess.getSingle(id);
All_Fav = databaseAccess.getAllFav();
databaseAccess.close();
// We're initialising our custom adapter with all our data from the database
AdapterListView1 adapterExt = new AdapterListView1(getContext(), Result);
for (position = 0; position < All_Fav.size(); position++) {
String checkN1Fav = getItem(position).getN1_fav();
String checkN2Fav = getItem(position).getN2_fav();
String checkN3Fav = getItem(position).getN3_fav();
String checkN4Fav = getItem(position).getN4_fav();
String checkN5Fav = getItem(position).getN5_fav();
String checkN6Fav = getItem(position).getN6_fav();
String checkN1Ext = adapterExt.getItem(0).getN1Ext();
String checkN2Ext = adapterExt.getItem(0).getN2Ext();
String checkN3Ext = adapterExt.getItem(0).getN3Ext();
String checkN4Ext = adapterExt.getItem(0).getN4Ext();
String checkN5Ext = adapterExt.getItem(0).getN5Ext();
String checkN6Ext = adapterExt.getItem(0).getN6Ext();
if (checkN1Ext.equals(checkN1Fav) ||
checkN2Ext.equals(checkN1Fav) ||
checkN3Ext.equals(checkN1Fav) ||
checkN4Ext.equals(checkN1Fav) ||
checkN5Ext.equals(checkN1Fav) ||
checkN6Ext.equals(checkN1Fav)) {
N1_fav.setBackgroundResource(R.drawable.ball_circle);
}
if (checkN1Ext.equals(checkN2Fav) ||
checkN2Ext.equals(checkN2Fav) ||
checkN3Ext.equals(checkN2Fav) ||
checkN4Ext.equals(checkN2Fav) ||
checkN5Ext.equals(checkN2Fav) ||
checkN6Ext.equals(checkN2Fav)) {
N2_fav.setBackgroundResource(R.drawable.ball_circle);
}
if (checkN1Ext.equals(checkN3Fav) ||
checkN2Ext.equals(checkN3Fav) ||
checkN3Ext.equals(checkN3Fav) ||
checkN4Ext.equals(checkN3Fav) ||
checkN5Ext.equals(checkN3Fav) ||
checkN6Ext.equals(checkN3Fav)) {
N3_fav.setBackgroundResource(R.drawable.ball_circle);
}
if (checkN1Ext.equals(checkN4Fav) ||
checkN2Ext.equals(checkN4Fav) ||
checkN3Ext.equals(checkN4Fav) ||
checkN4Ext.equals(checkN4Fav) ||
checkN5Ext.equals(checkN4Fav) ||
checkN6Ext.equals(checkN4Fav)) {
N4_fav.setBackgroundResource(R.drawable.ball_circle);
}
if (checkN1Ext.equals(checkN5Fav) ||
checkN2Ext.equals(checkN5Fav) ||
checkN3Ext.equals(checkN5Fav) ||
checkN4Ext.equals(checkN5Fav) ||
checkN5Ext.equals(checkN5Fav) ||
checkN6Ext.equals(checkN5Fav)) {
N5_fav.setBackgroundResource(R.drawable.ball_circle);
}
if (checkN1Ext.equals(checkN6Fav) ||
checkN2Ext.equals(checkN6Fav) ||
checkN3Ext.equals(checkN6Fav) ||
checkN4Ext.equals(checkN6Fav) ||
checkN5Ext.equals(checkN6Fav) ||
checkN6Ext.equals(checkN6Fav)) {
N6_fav.setBackgroundResource(R.drawable.ball_circle);
}
}
return convertView;
}
【问题讨论】:
标签: android listview background textview