Android SlidingTabLayout проблема положения

Я использую SlidingTabLayout в своем приложении. И я сделал пользовательский метод заполнения вкладок в этом классе. А также сделал пользовательский Listener для получения позиции вкладки. Но когда я нажимаю на вкладку, это дает мне последнюю позицию каждый раз. Я знаю, что здесь моя ошибка. Потому что я использую для цикла, чтобы установить положение. Но я не понимаю, как решить эту проблему.

Мой код здесь,

public void populateTabStrip(List<StoreType> st) {
    mTabStrip.removeAllViews();
    for (i = 0; i < st.size(); i++) {
        pos = i;
        View tabView = null;
        TextView tabTitleView = null;
        if (mTabViewLayoutId != 0) {
            tabView = LayoutInflater.from(getContext()).inflate(
                    mTabViewLayoutId, mTabStrip, false);
            tabTitleView = (TextView) tabView
                    .findViewById(mTabViewTextViewId);
        }

        if (tabView == null) {
            tabView = createDefaultTabView(getContext());
        }

        if (tabTitleView == null && TextView.class.isInstance(tabView)) {
            tabTitleView = (TextView) tabView;
        }

        if (mDistributeEvenly) {
            LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tabView
                    .getLayoutParams();
            lp.width = 0;
            lp.weight = 1;
        }

        tabTitleView.setText(st.get(i).getType());
        tabView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                CategoryListner.onSelect(pos);
            }
        });
        String desc = mContentDescriptions.get(i, null);
        if (desc != null) {
            tabView.setContentDescription(desc);
        }
        mTabStrip.addView(tabView);

        tabTitleView.setTextColor(getResources()
                .getColorStateList(selector));
        tabTitleView.setTextSize(14);
    }
}

Листер ниже,

 public static interface categorySelctListenr {
    public void onSelect(int i);
}

И код происхождения здесь

А также я не использую viewpager с вкладкой. Я просто использую вкладку с представлением списка ниже. Но актуальная проблема - слушатель. Потому что я хочу позицию конкретной вкладки. Спасибо.

1 ответ

Решение

Я не думаю, что это правильный способ реализовать SlidingTabLayout с пользовательским представлением. Но для вашего решения я бы подошел к гнезду.

  tabView.setTag(Integet.toString(pos)); //**here i set Tag of positon**
  tabView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int posClicked = Integet.parseInt(v.getTag().toString());// get tag that contain position 
                CategoryListner.onSelect(posClicked);
            }
        }); 

Надеюсь, это будет хорошо работать для вас.

Другие вопросы по тегам