私のListFragment中にこれがあります:
private SelectedItemListAdapter selectedItemListAdapter;
public void initSelectedItemListAdapter(CellItem[] itemList)
{
  selectedItemListAdapter = new SelectedItemListAdapter(getSherlockActivity(), R.layout.listview_item_selecteditem, itemList);
  setListAdapter(selectedItemListAdapter);
}
このメソッドを呼び出すと、データを設定できますが、ListViewこれまでにこのデータを更新しようとして失敗したことはすべて失敗しました。SelectedItemListAdapter私がそれを機能させることができた唯一の方法は、あまり効率的ではないと思う新しいインスタンスを作成することです。
私が試した1つの試みは、次を使用することでした。
public void updateSelectedItemListAdapter(CellItem[] newList)
{
  selectedItemListAdapter.clear();
  for(int i = 0; i < newList.length; i++)
    selectedItemListAdapter.add(newList[i]);
  setListAdapter(selectedItemListAdapter);
  selectedItemListAdapter.notifyDataSetChanged();
}
しかし、これは私にjava.lang.UnsupportedOperationException。これをメインスレッドで実行する方法についても読みましたが、同じ例外が発生します。
また、newListが前とは異なるカウントを持っている場合、私はを取得しますjava.util.ArrayList.throwIndexOutOfBoundsException。これは、データソースを更新するための何かが不足していることを示しています。
要求に応じて、ここに私のSelectedItemListAdapter:
public class SelectedItemListAdapter extends ArrayAdapter<CellItem>
{
  Context context;
  int layoutResourceId;
  CellItem data[] = null;
  private static final int ROW_ITEM = 0;
  private static final int ROW_VIEWTYPE_COUNT = 1;
  class CellItemHolder
  {
    LinearLayout rootLayout;
    TextView itemName;
    TextView itemValue;
  }
  public SelectedItemListAdapter(Context context, int layoutResourceId, CellItem[] data)
  {
    super(context, layoutResourceId, data);
    this.layoutResourceId = layoutResourceId;
    this.context = context;
    this.data = data;
  }
  @Override
  public View getView(int position, View convertView, ViewGroup parent)
  {
    View row = convertView;
    CellItemHolder holder = null;
    CellItem item = getItem(position);
    if(row == null)
    {
      holder = new CellItemHolder();
      LayoutInflater inflater = ((Activity)context).getLayoutInflater();
      row = inflater.inflate(layoutResourceId, parent, false);
      holder.rootLayout = (LinearLayout)row.findViewById(R.id.itemlist_rootLayout);
      holder.itemName = (TextView)row.findViewById(R.id.selectedItem_name);
      holder.itemValue = (TextView)row.findViewById(R.id.selectedItem_value);
      row.setClickable(true);
      row.setTag(holder);
    }
    else
    {
      holder = (CellItemHolder)row.getTag();
    }
    holder.itemName.setText(item.itemName);
    holder.itemValue.setText(item.itemValue);
    holder.rootLayout.setBackgroundColor(Color.WHITE);
    return row;
  }
  @Override
  public int getCount()
  {
    return data.length;
  }
  @Override
  public int getViewTypeCount()
  {
    return ROW_VIEWTYPE_COUNT;
  }
  @Override
  public int getItemViewType(int position)
  {
    return ROW_ITEM;
  }
}
リストアダプタを更新する方法について誰かがアイデアを持っていますか?