我有自定义ListAdapter,它扩展了ArrayAdapter:
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中的值(在某些点击时)(例如它会设置另一个文本)在一个特定的行上。)
我可以在listview中更改值以供短时间通知(在滚动列表之后它会回到旧状态):
int visiblePosition = myList.getFirstVisiblePosition();
View v = mylist.getChildAt(itemIndex - visiblePosition);
TextView mytextView = (TextView )v.findViewById(R.id.myTextboxId);
mytextView.setTxt("I ' va changed");
,执行此操作的正确方法是什么(告诉自定义适配器数据已更改(由实例化片段引起)
谢谢
答案 0 :(得分:0)
更好的方法是在arraylist中进行更改并通过调用notifyDataSetChanged来通知listview