0

我有扩展 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");

,这样做的正确方法是什么(告诉自定义适配器数据已更改(由实例片段引起)

谢谢

4

1 回答 1

0

更好的方法是在数组列表中进行更改并通过调用 notifyDataSetChanged 通知列表视图

于 2013-01-25T15:20:01.857 回答