0

私はアイテムのリストを表示し、ユーザーがそれらから選択できるAndroidアプリケーションを作成しています。項目がある場合はリストを更新しようとしていますが、どのようなコードを書いても、アプリケーションは常にクラッシュしています。以下は私がやっていることです

OnCreate メソッドには、以下のコードがあります

adapter = new ArrayAdapter<String>(getActivity(), layout, showArray);
setListAdapter(adapter);

現時点では、showArray は空の配列であり、今のところアプリケーションは機能します。

次に、showArray にデータを挿入し、別の方法でリスト アダプターを更新しようとしています。私は以下のコードを使用しています:

adapter = new ArrayAdapter<String>(getActivity(), layout, showArray);
setListAdapter(adapter);

しかし、アプリケーションがクラッシュします。コードを次のように変更しようとしました。

adapter = new ArrayAdapter<String>(getActivity(), layout, showArray);
adapter.notifyDataSetChanged();

しかし、もう一度運が悪い。

私の完全なコードは以下の通りです:

public class Fragment_AllCommunities extends Fragment {
    OnHeadlineSelectedListener callBack;

    // The container Activity must implement this interface so the frag can deliver messages
    public interface OnHeadlineSelectedListener {
        public void onCommunitySelected(int position);
    }

    private ProgressDialog progress;
    private Activity activity;
    private JSONArray communities;
    private JSONObject[] commDetails;
    private String[] showArray = {""};
    private int layout = 0;
    private ArrayAdapter<String> adapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // We need to use a different list item layout for devices older than Honeycomb
        layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
            android.R.layout.simple_list_item_activated_1 : android.R.layout.simple_list_item_1;

        adapter = new ArrayAdapter<String>(getActivity(), layout, showArray);
        setListAdapter(adapter);
    }

    public void updateAllCommunities(JSONObject[] commArr) throws JSONException {
        commDetails = commArr;

        showArray = new String[commDetails.length];

        for(int i=0;i<commDetails.length;i++)
        {
            showArray[i] =  commDetails[i].getString("name").toString();
        }

        //adapter = new ArrayAdapter<String>(getActivity(), layout, showArray);
        //adapter.notifyDataSetChanged();

        try
        {
            adapter.notifyDataSetChanged();
        }
        catch(Exception ex)
        {
            String s = ex.getMessage();
        }

  }


    @Override
    public void onStart() {
        super.onStart();
        if (getFragmentManager().findFragmentById(R.id.view_community_fragment) != null) {
            getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
            //getListView().setItemChecked(0, true);
        }
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            callBack = (OnHeadlineSelectedListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                + " must implement OnHeadlineSelectedListener");
        }
    }

    @Override
    public void onListItemClick(ListView l, View v, int position, long id) {
        callBack.onCommunitySelected(position);

        getListView().setItemChecked(position, true);
    }

    @Override
    public void onResume() {
        super.onResume();
        String a = "S";
    }
}

誰かが私が間違っていることを教えてもらえますか?

事前に感謝します すべての応答に感謝します

クライブ

4

2 に答える 2