Android Open Source - ShareList-Android Detail Fragment






From Project

Back to project page ShareList-Android.

License

The source code is released under:

GNU General Public License

If you think the Android project ShareList-Android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.mybop.sharelist.app.view;
/*w ww.  ja v a  2s .c om*/
import android.database.Cursor;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.ViewStub;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;

import com.j256.ormlite.stmt.GenericRowMapper;

import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.Click;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.OptionsItem;
import org.androidannotations.annotations.OptionsMenu;
import org.androidannotations.annotations.SystemService;
import org.androidannotations.annotations.TextChange;
import org.androidannotations.annotations.ViewById;
import org.mybop.sharelist.app.R;
import org.mybop.sharelist.app.control.DetailController;
import org.mybop.sharelist.app.database.entity.ElementEntity;
import org.mybop.sharelist.app.database.entity.ListEntity;
import org.mybop.sharelist.app.view.support.ListFragment;

import java.util.Arrays;

@EFragment(R.layout.fragment_detail)
@OptionsMenu(R.menu.listedition)
public class DetailFragment extends ListFragment implements ListFragment.OnItemDeletionListener, ListFragment.OnItemSelectionListener {

    private static final String LOGGER_TAG = DetailFragment.class.getSimpleName();

    private ListEntity list;
    private DetailAdapter detailAdapter;

    @ViewById(R.id.listNameEdit)
    protected EditText listNameEdit;

    @SystemService
    protected InputMethodManager inputMethodManager;

    private boolean viewInitialized = false;

    private boolean dataInitialized = false;

    private boolean selectText = false;

    @ViewById(R.id.listEmpty)
    protected ViewStub empty;

    @AfterViews
    protected void initViews() {
        empty.setOnInflateListener(new ViewStub.OnInflateListener() {
            @Override
            public void onInflate(ViewStub stub, View inflated) {
                inflated.findViewById(R.id.addElementButton).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        addElement();
                    }
                });
            }
        });
    }

    public void setData(ListEntity list, Cursor data, GenericRowMapper<ElementEntity> mapper) {
        this.list = list;
        detailAdapter = new DetailAdapter(getActivity(), data, mapper);
        setAdapter(detailAdapter);
        dataInitialized = true;
        init();
    }

    public void updateData(Cursor data) {
        detailAdapter.changeCursor(data);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        setOnItemDeletionListener(this);
        setOnItemSelectionListener(this);

        viewInitialized = true;
        selectText = savedInstanceState != null && ((DetailController) getActivity()).isNewlyCreated();
        init();
    }

    private void init() {
        if (!viewInitialized || !dataInitialized)
            return;
        listNameEdit.setText(list.getName());
        if (selectText) {
            listNameEdit.postDelayed(new Runnable() {
                @Override
                public void run() {
                    listNameEdit.requestFocus();
                    Editable editable = listNameEdit.getText();
                    assert editable != null;
                    listNameEdit.setSelection(editable.length());
                    inputMethodManager.showSoftInput(listNameEdit, InputMethodManager.SHOW_IMPLICIT);
                }
            }, 200);
        }
    }

    @Click(R.id.addElementButton)
    @OptionsItem(R.id.action_add_element)
    protected void addElement() {
        ((DetailController) getActivity()).addNewElement();
    }

    @OptionsItem(R.id.action_delete)
    protected void deleteCompletely() {
        ((DetailController) getActivity()).deleteCompletely();
    }

    @TextChange(R.id.listNameEdit)
    @Background
    protected void updateListName(CharSequence txt) {
        ((DetailController) getActivity()).updateName(txt.toString());
    }

    @Override
    public void onItemDeletion(Object[] deletedItems) {
        ((DetailController) getActivity()).deleteAll(Arrays.copyOf(deletedItems, deletedItems.length, ElementEntity[].class));
    }

    @Override
    public void onItemSelection(Object selectedItem) {
        ((DetailController) getActivity()).edit((ElementEntity) selectedItem);
    }
}




Java Source Code List

org.mybop.sharelist.app.ShareListApplication.java
org.mybop.sharelist.app.control.DetailActivity.java
org.mybop.sharelist.app.control.DetailController.java
org.mybop.sharelist.app.control.ListController.java
org.mybop.sharelist.app.control.MainActivity.java
org.mybop.sharelist.app.database.DatabaseHelper.java
org.mybop.sharelist.app.database.NoIdCursorWrapper.java
org.mybop.sharelist.app.database.entity.ElementEntity.java
org.mybop.sharelist.app.database.entity.ListEntity.java
org.mybop.sharelist.app.database.repository.ElementRepository.java
org.mybop.sharelist.app.database.repository.ListRepository.java
org.mybop.sharelist.app.util.ArrayUtil.java
org.mybop.sharelist.app.view.DetailAdapter.java
org.mybop.sharelist.app.view.DetailFragment.java
org.mybop.sharelist.app.view.ListAdapter.java
org.mybop.sharelist.app.view.MasterFragment.java
org.mybop.sharelist.app.view.support.CheckableLinearLayout.java
org.mybop.sharelist.app.view.support.CheckableRelativeLayout.java
org.mybop.sharelist.app.view.support.ListFragment.java
org.mybop.sharelist.app.view.support.OrmLiteAdapter.java