这个问题在我脑海中停留了一段时间。
我需要做什么: 显示列表视图,其中包含listView中项目的交替资源。
我的问题是什么: 到目前为止,我可以替换资源并显示数据,或显示数据但不显示备用资源。第一项每次都运作良好,但不会在那里形成。我觉得我很亲密,但我不能想到会出现什么问题......
我做了什么: 我使用了一个自定义的简单游标适配器。
代码在哪里:
public class DialogCursor extends SimpleCursorAdapter {
private LinearLayout wrapper;
private TextView burbuja;
public DialogCursor(Context context, int layout, Cursor c, String[] from,
int[] to, int flags) {
super(context, layout, c, from, to, flags);
// TODO Auto-generated constructor stub
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
if (row == null) {
Context context = parent.getContext();
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.dialogo_row, parent, false);
}
burbuja = (TextView) row.findViewById(R.id.idiomaselec);
wrapper = (LinearLayout) row.findViewById(R.id.wrapper);
//get reference to the row
View view = super.getView(position, convertView, parent);
Log.d("Dialogo","enters getview");
Log.d("Dialogo",Integer.toString(position));
//check for odd or even to set alternate colors to the row background
if(position % 2 == 0){
Log.d("Dialogo","Even");
burbuja.setBackgroundResource(R.drawable.bubble_green);
wrapper.setGravity(Gravity.LEFT);
}
else {
Log.d("Dialogo","not even");
burbuja.setBackgroundResource(R.drawable.bubble_yellow);
wrapper.setGravity(Gravity.RIGHT);
}
return row;
}
}
从另一个类(仅显示相关部分)调用游标适配器
String [] from = new String [] {DialogoTable.TABLE_DIALOGO +“。” + columna};
//我们映射的UI上的字段 final int [] to = new int [] {R.id.idiomaselec};
Log.d("Dialogo","entra en fillData2");
getLoaderManager().initLoader(0, null, this);
if (bot) {
Log.d("Dialogo","entra en fillData2.5");
getLoaderManager().restartLoader(0, null, this);
}
adapter2 = new DialogCursor(this, R.layout.dialogo_row, null, from, to, 0);
setListAdapter(adapter2);
输出: 如果我返回行(最后一行代码) 我在适当的地方获得了背景资源,但没有数据 如果我返回视图(最后一行代码) 我得到了数据,但只有第一项具有正确的背景资源。
最后一点: 我跟着这个例子 http://adilsoomro.blogspot.com/2012/12/android-listview-with-speech-bubble.html 但我不想创建类消息,因为我从数据库中获取数据。
感谢您的帮助:)
答案 0 :(得分:0)
在类似的情况下,我能够根据光标位置拥有自定义cursorAdapter备用资源。我将以下代码放在我的bindView中,其中entryView是传递给视图的。我完全凌驾于getView。
if(cursor.getPosition()%2 == 1){
entryView.findViewById(R.id.title_relative).setBackgroundColor(getResources().getColor(R.color.orange));
}else{
entryView.findViewById(R.id.title_relative).setBackgroundColor(getResources().getColor(R.color.blue));
}