我正在使用一个带有两个来自SQLite的独立表的数据库,我的CRUD操作正常。然后,我在同一个活动上显示两个列表视图,一个在另一个之上,这也正常。总之,我遵循了以下步骤:
每个listview有6列。第一列是列表视图中项目/行的位置,其他5列包含SQLite中各个表的值。
如果我此时运行应用程序,一切都很完美,我可以看到两个列表视图一个在另一个上面,显示SQLite表中的数据。
现在我想将listview2中的值与listview1中的值进行比较。例如,如果listview2中的position1 / row1,column2的textview等于listview1中的任何项目,则该特定textview应具有不同的背景。
我设法比较了这些值并设置了背景。问题是,如果满足条件并且我在listview2,position1 / row1,column2的textview上设置背景,则背景将从listview2自动更改整个column2。
那么如何根据条件以编程方式更改单个textview的背景,而不会影响同一列表视图中其他行/列的任何其他文本视图?
非常感谢。
编辑 - 添加ListView2适配器代码
如上所述,如果条件满足,我可以更改特定textview的背景,但是即使条件视图中的其他行没有满足条件,这也会发生在整个列中。
@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;
}
答案 0 :(得分:0)
如果没有代码,它有点难,但也许你必须为textview设置默认背景,而不是假设有不同的背景。