【问题标题】:Update content in ListFragment on menu click单击菜单时更新 ListFragment 中的内容
【发布时间】:2016-05-23 17:38:26
【问题描述】:

我有一个包含一些数据的 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();
}

【问题讨论】:

标签: android android-listfragment


【解决方案1】:

使用排序(通过比较器)或通过数组或自定义适配器上的过滤器 - 取决于适配器对象的复杂性

一些例子和参考:

数组适配器的基本示例:

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

*Item - 适配器项的类定义

阵列适配器文档参考:

为您的案例提供完整的解决方案:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    相关资源
    最近更新 更多