我有扩展 ArrayAdapter 的自定义 ListAdapter :
private class MyPrivateClassListAdapter extends ArrayAdapter<someObject> {
private ArrayList<someObject> items;
public MyPrivateClassListAdapter(Context context, int textViewResourceId, ArrayList<someObject> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null)
{
LayoutInflater vi = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//cashedHolder=new CashedValuesForListView(convertView);
v = vi.inflate(R.layout.some_xml, null);
}
someObject o = items.get(position);
if (o != null) {
TextView myTxt = (TextView) v.findViewById(R.id.myTextboxId);
myText.setText("some text");
}
return v;
}
}
这个 ArrayAdapter 在我的主要活动中,所以我在点击的主要活动中调用它:
this.m_adapter = new MyPrivateClassListAdapter(getActivity(), R.layout.rows_to_fill, someObject);
myList.setAdapter(this.m_adapter);
到目前为止一切都很好,但问题是,从这个主要活动中,我正在调用另一个片段,它将更改 myListview 中的值(在某些点击触发时)(例如,它将在特定行上设置另一个文本。)。
我可以在短时间内更改列表视图中的值(滚动列表后它会回到旧状态):
int visiblePosition = myList.getFirstVisiblePosition();
View v = mylist.getChildAt(itemIndex - visiblePosition);
TextView mytextView = (TextView )v.findViewById(R.id.myTextboxId);
mytextView.setTxt("I ' va changed");
,这样做的正确方法是什么(告诉自定义适配器数据已更改(由实例片段引起)
谢谢