我有一个ListFragment及其布局A,对于列表中的每个项目,我都有其布局,也称为B.内部B我有一个ID为“imgVi”的图像视图:
<ImageView
android:id="@+id/imgVi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
从onCreateView方法中的ListFragment我想要访问此ImageView以更改图像src。我怎样才能做到这一点?。由于此imageView不在ListFragment布局中,我无法执行此操作:
ImageView imgEmp = (ImageView) view.findViewById(R.id.imageViewEmp);
imgEmp.setBackgroundResource(R.drawable.ic_tab_emp_selected);
但是布局B在布局A中。因为它是一个带有行的列表。
任何帮助都会被贬低。我是Android的新手。
编辑:我得到了它,只需按照本教程http://thinkandroid.wordpress.com/2010/01/11/custom-cursoradapters/
public class ListClientsCursorAdapter extends SimpleCursorAdapter{
private Context context;
private int layout;
public ListClientsCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to, int flags) {
super(context, layout, c, from, to, flags);
this.context = context;
this.layout = layout;
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
Cursor c = getCursor();
final LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(layout, parent, false);
int nameCol = c.getColumnIndex("name");
String name = c.getString(nombreCol);
int telfCol = c.getColumnIndex("telf");
String telf = c.getString(telfCol);
/**
* Next set the name of the entry.
*/
TextView name_text = (TextView) v.findViewById(R.id.textViewNombEmp);
if (name_text != null) {
name_text .setText(name);
}
TextView telf_text = (TextView) v.findViewById(R.id.textViewTelfEmp);
if (telf_text != null) {
telf_text.setText(telf);
}
ImageView imgEmp = (ImageView) v.findViewById(R.id.imageViewEmp);
if (imgEmp != null) {
imgEmp.setBackgroundResource(R.drawable.ic_tab_emp_selected);
}
return v;
}
}
然后在我调用的ListFragment的onCreateView中:
ListClientCursorAdapter notes = new ListClientCursorAdapter(context,R.layout.activity_fil_client, mCursor, from, to, 0);
setListAdapter(notes);
而不是SimpleCursorAdapter。
答案 0 :(得分:1)
如果您有ListFragment
,则必须为列表设置适配器。在该适配器中,您可以覆盖方法getView()
,并且可以访问那里的ImageView
,您无法从片段内的onCreateView
方法访问它。