Доступ к элементам ViewPager

361
26 октября 2017, 07:22

Пишу музыкальный плеер. Есть два элемента в ViewPager. Как получить к ним доступ из MainActivity? Мне нужно заполнить DragSortListView, но при таком раскладе в onCreate вылетает ошибка.

DragSortListView PlaylistView = (DragSortListView) findViewById(R.id.playlist);

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/root_view_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.jonikevseenko.im.IMAPTabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="?attr/actionBarSize"
        android:background="@color/colorPrimaryDark"
        android:visibility="gone"
        app:tabIndicatorColor="@color/colorAccent" />
    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tab_layout" />
</RelativeLayout>

playlist_tab.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:dslv="http://schemas.android.com/apk/res-auto"
    xmlns:app="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout
        android:id="@+id/toolbarplaying"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:layout_alignParentBottom="false"
        android:background="?attr/colorPrimary">
        <ImageButton
            android:id="@+id/morePlaylist"
            style="?android:attr/borderlessButtonStyle"
            android:layout_width="56dp"
            android:layout_height="56dp"
            android:layout_alignParentRight="true"
            android:layout_weight="1"
            android:background="@drawable/button_background"
            android:minHeight="?attr/actionBarSize"
            android:minWidth="?attr/actionBarSize"
            dslv:srcCompat="@drawable/ic_more" />
        <ImageButton
            android:id="@+id/menuDrawerOpenPlaylist"
            style="?android:attr/borderlessButtonStyle"
            android:layout_width="56dp"
            android:layout_height="56dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentRight="false"
            android:background="@drawable/button_background"
            android:minHeight="?attr/actionBarSize"
            android:minWidth="?attr/actionBarSize"
            android:onClick="onClickMenu"
            app:srcCompat="@drawable/ic_menu_white_48dp"
            dslv:srcCompat="@drawable/ic_menu" />
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_toLeftOf="@+id/morePlaylist"
            android:layout_toRightOf="@+id/menuDrawerOpenPlaylist"
            android:orientation="vertical">
            <TextView
                android:id="@+id/titlePlaylist"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginTop="2dp"
                android:layout_weight="1"
                android:singleLine="true"
                android:text="Title text"
                android:textColor="@color/material_drawer_background"
                android:textSize="15dp" />
            <TextView
                android:id="@+id/subtitlePlaylist"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_weight="1"
                android:singleLine="true"
                android:text="Title text"
                android:textColor="@color/black_colorText"
                android:textSize="13dp" />
        </LinearLayout>
    </RelativeLayout>
    <com.mobeta.android.dslv.DragSortListView
        android:id="@+id/playlist"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/selectFilesLayout"
        android:layout_below="@+id/toolbarplaying"
        android:dividerHeight="1dp"
        android:longClickable="true"
        android:paddingBottom="0dp"
        android:paddingLeft="0dp"
        android:paddingTop="0dp"
        dslv:collapsed_height="2dp"
        dslv:drag_enabled="true"
        dslv:drag_handle_id="@drawable/ic_folder_open_black_24dp"
        dslv:drag_scroll_start="0.33"
        dslv:drag_start_mode="onMove"
        dslv:float_alpha="0.6"
        dslv:max_drag_scroll_speed="0.5"
        dslv:remove_enabled="true"
        dslv:remove_mode="flingRemove"
        dslv:slide_shuffle_speed="0.3"
        dslv:sort_enabled="true"
        dslv:track_drag_sort="false"
        dslv:use_default_controller="true" />
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/selectFilesLayout"
        android:layout_width="match_parent"
        android:layout_height="65dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="false"
        android:layout_centerVertical="true"
        android:background="?attr/colorPrimary"
        android:visibility="visible">
        <ImageButton
            android:id="@+id/btnCompleteCheck"
            style="?android:attr/borderlessButtonStyle"
            android:layout_width="65dp"
            android:layout_height="65dp"
            android:layout_alignParentEnd="false"
            android:layout_alignParentRight="false"
            android:layout_centerVertical="false"
            android:background="@drawable/button_background"
            android:onClick="addFiles"
            dslv:srcCompat="@drawable/ic_add" />
        <ImageButton
            android:id="@+id/btnRemove"
            style="?android:attr/borderlessButtonStyle"
            android:layout_width="65dp"
            android:layout_height="65dp"
            android:layout_alignParentTop="true"
            android:layout_toEndOf="@+id/btnCompleteCheck"
            android:layout_toRightOf="@+id/btnCompleteCheck"
            android:background="@drawable/button_background"
            android:onClick="remove"
            dslv:srcCompat="@drawable/ic_remove" />
        <ImageButton
            android:id="@+id/dragSwitcher"
            style="?android:attr/borderlessButtonStyle"
            android:layout_width="65dp"
            android:layout_height="65dp"
            android:layout_alignParentEnd="false"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="false"
            android:background="@drawable/button_background"
            android:onClick="drag"
            dslv:srcCompat="@drawable/ic_sort" />
    </RelativeLayout>
</RelativeLayout>

MainActivity.java

package com.jonikevseenko.im;
import android.content.Intent;
import android.os.Parcelable;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import com.mikepenz.materialdrawer.Drawer;
import com.mikepenz.materialdrawer.DrawerBuilder;
import com.mikepenz.materialdrawer.model.DividerDrawerItem;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import com.mobeta.android.dslv.DragSortController;
import com.mobeta.android.dslv.DragSortListView;
import java.io.File;
import java.util.ArrayList;
public class MainActivity extends ActionBarActivity {
    PrimaryDrawerItem ItemAdd, ItemOptions, itemPlaylist,itemExit;
    SecondaryDrawerItem ItemPlaylists;
    TextView titlep1,subtitlep1,titlep2,subtitlep2;
    ArrayList<String> addedFiles = new ArrayList<>();
    Drawer MainDrawer;
    Intent addFiles;
    private ViewPager mViewPager;
    private IMAPTabAdapter mTabAdapter;
    private IMAPTabLayout mTabLayout;
    TabLayout.TabLayoutOnPageChangeListener tabLayoutOnPageChangeListener;
    int targetPlaylist = 0;
    final int RC_ADDFILES = 1;
    ImageButton dragSwitch, removeSwitch;
    Parcelable PlaylistInstanceState;
    DragSortListView PlaylistView;
    ArrayAdapter<String> adapter;
    ArrayList<String> fileList = new ArrayList<>();
    DragSortController controller;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        addFiles = new Intent(this,FileManager.class);
        mViewPager = (ViewPager) findViewById(R.id.viewpager_main);
        mTabLayout = (IMAPTabLayout) findViewById(R.id.tab_layout);
        mTabAdapter = new IMAPTabAdapter(getSupportFragmentManager());
        mViewPager.setAdapter(mTabAdapter);
        mTabLayout.setupWithViewPager(mViewPager);
        mTabLayout.createTabs();
        tabLayoutOnPageChangeListener = new TabLayout.TabLayoutOnPageChangeListener(mTabLayout);
        mViewPager.addOnPageChangeListener(tabLayoutOnPageChangeListener);
        mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                mViewPager.removeOnPageChangeListener(tabLayoutOnPageChangeListener);
                mViewPager.setCurrentItem(tab.getPosition());
                mViewPager.addOnPageChangeListener(tabLayoutOnPageChangeListener);
                titlep1 = (TextView) findViewById(R.id.titlePlaying);
                subtitlep1 = (TextView) findViewById(R.id.subtitlePlaying);
                titlep2 = (TextView) findViewById(R.id.titlePlaylist);
                subtitlep2 = (TextView) findViewById(R.id.subtitlePlaylist);
                titlep1.setText("Title 1");
                subtitlep1.setText("Add playlist");
                titlep2.setText("Title 2");
                subtitlep2.setText("Add files");
            }
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
            }
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });
        if(savedInstanceState!=null) {
        }else {
            PlaylistView = (DragSortListView) findViewById(R.id.playlist);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data == null) {return;}
        addedFiles = data.getStringArrayListExtra("selectList");
        loadPlaylist();
    }
    public void loadPlaylist(){
        for (String file:addedFiles){
            File f = new File(file);
            fileList.add(f.getName());
        }
        adapter = new ArrayAdapter<String>(this, R.layout.item_playlist, R.id.itemNamePL, fileList);

        PlaylistView.setDropListener(onDrop);
        PlaylistView.setRemoveListener(onRemove);
        PlaylistView.setAdapter(adapter);
        controller = new DragSortController(PlaylistView);
        controller.setDragHandleId(R.drawable.ic_sort);
        controller.setClickRemoveId(R.drawable.ic_remove);
        controller.setRemoveEnabled(false);
        controller.setSortEnabled(true);
        controller.setDragInitMode(1);
        controller.setRemoveMode(1);
        PlaylistView.setFloatViewManager(controller);
        PlaylistView.setOnTouchListener(controller);
        PlaylistView.setDragEnabled(false);
        PlaylistView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                return true;
            }
        });
        PlaylistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                TextView tx =(TextView) view.findViewById(R.id.itemNamePL);
                Toast.makeText(getApplicationContext(),tx.getText(),Toast.LENGTH_SHORT).show();
            }
        });
    }
    public void addFiles(View v){
        startActivityForResult(addFiles,RC_ADDFILES);
    }
}

IMAPTabAdapter.java

package com.jonikevseenko.im;
import android.support.v4.app.FragmentStatePagerAdapter;
public class IMAPTabAdapter extends FragmentStatePagerAdapter {
    public IMAPTabAdapter(android.support.v4.app.FragmentManager fm) {
        super(fm);
    }
    @Override
    public android.support.v4.app.Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new PlayingTab();
            case 1:
                return new PlaylistTab();
            default:
                return null;
        }
    }
    @Override
    public int getCount() {
        return 2;
    }
}

IMAPTabLayout.java

package com.jonikevseenko.im;
import android.content.Context;
import android.support.design.widget.TabLayout;
import android.util.AttributeSet;

public class IMAPTabLayout extends TabLayout {
    public IMAPTabLayout(Context context) {
        super(context);
    }
    public IMAPTabLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public IMAPTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    Tab pt;
    Tab pt2;
    public void createTabs() {
        pt = newTab();
        pt.setText("Бла бла 1");
        addTab(pt);
        pt2 = newTab();
        pt2.setText("Бла бла 2");
        addTab(pt2);
    }
}
READ ALSO
jsf + ear + weblogic + java

jsf + ear + weblogic + java

Добрый вечер, коллеги)

214
Как затемнить и деактивировать экран

Как затемнить и деактивировать экран

У меня в приложении главный экран это GoogleMap на весь экранТакже стоит слушатель на наличие подключения к интернету

250
Java, многопоточночть, Sqlite

Java, многопоточночть, Sqlite

Есть несколько Sqlite баз, которым нужно делать вакумХочу делать вакум всем база в нескольких паралелльных потоках

178
Tочное значение термина &ldquo;unhandled exception&rdquo;

Tочное значение термина “unhandled exception”

Какие исключения относятся к необработанным? Те, которые не были обёрнуты в try-catch? Исключение, которое создаётся в методе, объявленном с throws...

281