/* * Copyright (C) 2015 Mr.Simple <[email protected]> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.simple.eventbus.demo.fragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.Toast; import org.simple.eventbus.EventBus; import org.simple.eventbus.Subscriber; import org.simple.eventbus.ThreadMode; import org.simple.eventbus.demo.R; import org.simple.eventbus.demo.bean.User; import java.util.LinkedList; import java.util.List; /** * @author mrsimple */ public class ConstactFragment extends Fragment { BaseAdapter mAdapter; List<User> mConstacts = new LinkedList<User>(); ListView mListView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { mListView = (ListView) inflater.inflate(R.layout.list_fragment, container, false); mockDatas(); initListView(); EventBus.getDefault().register(this); return mListView; } private void initListView() { mAdapter = new ArrayAdapter<User>(getActivity(), android.R.layout.simple_list_item_1, mConstacts); mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 点击用户,发布消息, // tag为MenuFragment.CLICK_TAG,接收函数在MenuFragment的updateClickUserName中 EventBus.getDefault().post(mConstacts.get(position), MenuFragment.CLICK_TAG); } }); } @Subscriber private void primitiveParam(int aInt) { Toast.makeText(getActivity(), "int = " + aInt, Toast.LENGTH_SHORT).show(); } @Subscriber private void primitiveArrayParam(int[] aInt) { Toast.makeText(getActivity(), "int array = " + aInt[0] + ", " + aInt[1], Toast.LENGTH_SHORT) .show(); } @Subscriber private void primitiveParam(boolean ab) { Toast.makeText(getActivity(), "boolean = " + ab, Toast.LENGTH_SHORT).show(); } @Override public void onDestroy() { EventBus.getDefault().unregister(this); super.onDestroy(); } private void mockDatas() { for (int i = 0; i < 6; i++) { mConstacts.add(new User("User - " + i)); } } /** * @param person */ @Subscriber public void addPerson(User person) { mConstacts.add(person); mAdapter.notifyDataSetChanged(); } /** * 含有tag标识的函数 * * @param person */ @Subscriber(tag = MenuFragment.REMOVE_TAG) private void removePersonPrivate(User person) { mConstacts.remove(person); mAdapter.notifyDataSetChanged(); } /** * 执行在异步线程的函数 * * @param event */ @Subscriber(tag = MenuFragment.ASYNC_TAG, mode = ThreadMode.ASYNC) private void asyncMethod(final User person) { try { final String threadName = Thread.currentThread().getName(); mListView.post(new Runnable() { @Override public void run() { Toast.makeText(getActivity(), R.string.execute_async + threadName + ", User Info : " + person, Toast.LENGTH_LONG) .show(); } }); Thread.sleep(5 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } } }