【发布时间】:2023-03-28 23:30:01
【问题描述】:
我有:
- 一个
MyListActivity class extends ListActivitysetContentView(R.layout.mylist); - 两个 xml 文件:
mylist.xml和list_row.xml。 -
mylist.xml是布局,list_row.xml是每一行的样子。 -
list_row.xml包含 3 个TextViews(t1,t2,t3)。
我想更改 MyListActivity 类中 t2 的一些文本。因为内容视图是 mylist.xml 所以我不能简单地使用findViewById。所以我用了LayoutInflater。
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.list_row, null);
textView2 = (TextView) v.findViewById(R.id.t2);
textView2.setText("ccccc");
问题是 t2 的文本永远不会改变。我尝试了很多次,文本仍然是我在list_row.xml中设置的文本。我不知道为什么..有人可以帮忙。谢谢!
=====解决方案:=====
创建我自己的SimpleCursorAdapter 类并覆盖getView() 方法。
private class MySimpleCursorAdapter extends SimpleCursorAdapter {
Cursor c;
public MySimpleCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
this.c = c;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
super.getView(position, convertView, parent);
LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.list_row, parent, false);
TextView textview1 = (TextView) rowView.findViewById(R.id.text1);
textView1.setText(c.getString(1));// whatever should be in textView1
textView2 = (TextView) rowView.findViewById(R.id.text2);
textView2.setText("ccccc");
return rowView;
}
}
super.getView(position, convertView, parent); 非常重要,因为如果我没有该行,textView1 将始终显示第一行的值(例如,如果textView1 显示 id,则它始终为 1)。
【问题讨论】:
标签: android android-layout android-listview