2016-05-23 23 views
0

我有一個帶有一些數據的ListFragment。我試圖根據我從菜單中選擇的項目對列表中的內容進行排序。當我從菜單中選擇一個選項時,如何更新列表的內容?我不想創建另一個片段,我只是想按名稱或日期對列表中的信息進行排序,所以當我單擊菜單中的一個項目時,列表會立即更新,具體取決於我是單擊按名稱排序還是單擊按日期排序。在菜單上點擊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