2016-05-23 5 views
0

私はいくつかのデータを持つListFragmentを持っています。メニューから選択する項目によって、リストの内容を並べ替えようとしています。メニューから1つのオプションを選択すると、リストの内容を更新するにはどうすればよいですか?私は別のフラグメントを作成したくありません。リスト内にある情報を名前または日付でソートする必要があります。日付けで並び替え。メニューのListFragmentのコンテンツを更新します。

public class MainActivity extends AppCompatActivity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_sort_by_name) { 
     Fragment currentFragment =  this.getFragmentManager().findFragmentById(R.id.fragment1); 
     ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.Months, android.R.layout.simple_list_item_1); 
     setListAdapter(adapter); 
    } 
    return super.onOptionsItemSelected(item); 
} 

そして私は、フラグメントのためのJavaクラスを持っている:

public class EventsListFragment extends ListFragment implements  OnItemClickListener { 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.list_fragment, container, false); 
    return view; 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.Planets, android.R.layout.simple_list_item_1); 
    setListAdapter(adapter); 
    getListView().setOnItemClickListener(this); 
} 

@Override 
public void onItemClick(AdapterView<?> parent, View view, int position,long id) { 
    Toast.makeText(getActivity(), "Item: " + position, Toast.LENGTH_SHORT).show(); 
} 
+0

[ArrayAdapter](https://developer.android.com/reference/android/widget/ArrayAdapter.html#sort%28java.util.Comparator%3C?%20super%)の並べ替えを更新できるようです20T%3E%29) – zec

答えて

0

は(コンパレータによって)ソートや配列やカスタムアダプタのフィルターでの使用 - アダプタオブジェクトの複雑さに応じて、

いくつかの例と参考文献:

アレイアダプタの基本的な例:

Adapter.sort(new Comparator<Item>() { 
    @Override 
    public int compare(Item lhs, Item rhs) { 
     return lhs.compareTo(rhs); //Your sorting algorithm 
    } 
}); 

*アイテム - アダプタ項目のクラス定義

配列アダプタドキュメントの参照:

あなたのケースのための完全なソリューション:

+0

金のためにうわー! – zec

関連する問題