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

より良い方法は、arraylist を変更し、notifyDataSetChanged を呼び出してリストビューに通知することです。

于 2013-01-25T15:20:01.857 に答える