当用户单击详细片段中的按钮时突出显示 CaseListActivity 中的项目

Highlight item in CaseListActivity when user clicked on buttons in detail fragment

我正在使用 android 工作室的主从布局。当页面首次加载或用户单击菜单项时,我设法突出显示了菜单项。对于我的详细信息页面,我添加了两个按钮,"Next" 和 "Previous",当用户单击它时,它们使用户能够浏览菜单项。我的问题是 如何使菜单项与详细信息页面同步突出显示? 当我旋转设备。

MainFragment.java

public class Keputusan extends Fragment {

    ...

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        final TextView button_prev = (TextView) view.findViewById(R.id.btn_prev);
        TextView button_next = (TextView) view.findViewById(R.id.btn_nxt);
        PageTransition.pageContents(this, CaseContent.getSize(), "formA",
                getArguments().getString(ARG_ITEM_ID), button_next, button_prev);
    }

}

CaseListActivity.java

public class CaseListActivity extends BaseActivity {

    int selectedItem = 0; //current item on list

    ...

        @Override
        public void onBindViewHolder(final ViewHolder holder, final int position) {

            holder.mItem = mValues.get(position);
            holder.mContentView.setText(mValues.get(position).content);
            holder.mIcon.setText(mValues.get(position).icon);

            if(selectedItem == position || position == PageTransition.getItemPosition()) {
                holder.mView.setSelected(true);
                //Change text color when highlighted
                holder.mContentView.setTextColor(ContextCompat.getColor(getApplicationContext(),
                        R.color.colorPrimary));
            }
            else {
                holder.mView.setSelected(false);
                holder.mContentView.setTextColor(ContextCompat.getColor(getApplicationContext(), android.R.color.black));
            }

            holder.mView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    selectedItem = position;
                    onSelectedMenuItem(holder.mItem.id, v);
                    notifyDataSetChanged(); //make system recognize selectedItem = position
                }
            });
        }
        ...
    }

PageTransition.java

public class PageTransition {

    public static final String TAG = PageTransition.class.getSimpleName();
    private static int pageId;

    ....

    public static void pageContents(final Fragment fragment, int totalPage, final String form, String id, TextView next,
                                    TextView previous) {
        //change string string to int
        int pageID = Integer.parseInt(id);
        int prevID = 0, nextID = 0;

        if(pageID == 1) {
            previous.setVisibility(View.GONE); //hide prev button onn 1st page
            nextID = ++pageID;

        } else if (pageID > 1 && pageID < totalPage ) {
            prevID = --pageID;
            nextID = 2+pageID;

        } else if (pageID == totalPage) {
            next.setVisibility(View.GONE); //hide next button on last page
            prevID = --pageID;

        }

        final int finalNextID = nextID;
        next.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Fragment _fragment = init(String.valueOf(finalNextID), form);
                    fragment.getFragmentManager().beginTransaction()
                            .replace(R.id.case_detail_container, _fragment).commit();
                }
            });

        final int finalPrevID = prevID;
        previous.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Fragment _fragment = init(String.valueOf(finalPrevID), form);
                    fragment.getFragmentManager().beginTransaction()
                            .replace(R.id.case_detail_container, _fragment).commit();
                }
            });

    }

    //highlighted menu items in next & prev
    public static int getItemPosition() {
        //since position starts with "1"
        Log.d(TAG, "getId: pageID " + pageId);
        return pageId - 1 ;
    }

    ....
}

我无法找到有关如何从另一个 activity 直接访问回收站视图的解决方案。相反,我在 CaseListActivity(与回收器视图相同的文件)中调用了下一个和上一个按钮,然后在 ViewHolder 中,我设置了下一个和上一个 onClickedListeners。我不知道这是否是正确的方法....但它完成了工作。