ViewPager2 with ListView example in Sketchware pro

1. Create a new project in Sketchware. (Same codes for Android studio here https://apktutor.in/2025/10/02/viewpager2-example-with-fragment-containing-a-listview/ )

2. In main.xml add a TabLayout and a ViewPager viewpager1.

3. Convert ViewPager to androidx.viewpager2.widget.ViewPager2.


4. Switch On AppCompat and design.

5. Add three Custom Views fragment1, fragment2, and fragment3.

In fragment1.xml add a TextView.



In fragment2.xml add a MaterialButton materialbutton1.



In fragment3.xml add a ListView listview1.


6. Add a Custom View for ListView items list_item_fruits.xml with two TextViews textview1 and textview2.


7. In Java/Kotlin manager, add a new Java file Fragment1.java. Add following codes in it.


package com.my.newproject18;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

public class Fragment1 extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment1, container, false);
    }
}

8. Add a new Java file Fragment2.java. Add following codes in it. On Button click event it will Toast a message.



package com.my.newproject18;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.widget.Toast;
import com.google.android.material.button.MaterialButton;

public class Fragment2 extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        
        View view = inflater.inflate(R.layout.fragment2, container, false);
        MaterialButton button1 = view.findViewById(R.id.materialbutton1);
        
        button1.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            Toast.makeText(requireContext(), "Button clicked", Toast.LENGTH_SHORT).show();
        }
        });
        
        return view;
    }
}

9. Add a new Java file ViewPagerAdapter.java. Add following codes in it.



package com.my.newproject18;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter;

import java.util.ArrayList;
import java.util.List;

public class ViewPagerAdapter extends FragmentStateAdapter {

    private final List<Fragment> fragments = new ArrayList<>();
    private final List<String> fragmentTitles = new ArrayList<>();

    public ViewPagerAdapter(@NonNull FragmentActivity fragmentActivity) {
        super(fragmentActivity);
    }

    public void addFragment(Fragment fragment, String title) {
        fragments.add(fragment);
        fragmentTitles.add(title);
    }

    @Override
    public int getItemCount() {
        return fragments.size();
    }

    @NonNull
    @Override
    public Fragment createFragment(int position) {
        return fragments.get(position);
    }

    public String getPageTitle(int position) {
        return fragmentTitles.get(position);
    }
}

10. Add a new Java file Fragment3.java. Add following codes in it.



package com.my.newproject18;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.widget.LinearLayout;
import android.widget.TextView;

import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;

public class Fragment3 extends Fragment {
    private ListView listview1;
    private ArrayList<HashMap<String, Object>> fruitList;
    
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment3, container, false);
        
        listview1 = view.findViewById(R.id.listview1);
        
        // Initialize data
        initializeData();
        
        // Setup adapter
        listview1.setAdapter(new Listview1Adapter(fruitList));
        ((BaseAdapter)listview1.getAdapter()).notifyDataSetChanged();
        
        // Setup click listener
        setupClickListener();
        
        return view;
    }
    
    private void initializeData() {
        fruitList = new ArrayList<>();
        
        // Create sample data
        HashMap<String, Object> fruit1 = new HashMap<>();
        fruit1.put("name", "Apple šŸŽ");
        fruit1.put("color", "Red");
        
        HashMap<String, Object> fruit2 = new HashMap<>();
        fruit2.put("name", "Banana šŸŒ");
        fruit2.put("color", "Yellow");
        
        HashMap<String, Object> fruit3 = new HashMap<>();
        fruit3.put("name", "Grapes šŸ‡");
        fruit3.put("color", "Purple");
        
        HashMap<String, Object> fruit4 = new HashMap<>();
        fruit4.put("name", "Mango 🄭");
        fruit4.put("color", "Yellow");
        
        fruitList.add(fruit1);
        fruitList.add(fruit2);
        fruitList.add(fruit3);
        fruitList.add(fruit4);
    }
    
    public class Listview1Adapter extends BaseAdapter {
		
		ArrayList<HashMap<String, Object>> _data;
		
		public Listview1Adapter(ArrayList<HashMap<String, Object>> _arr) {
			_data = _arr;
		}
		
		@Override
		public int getCount() {
			return _data.size();
		}
		
		@Override
		public HashMap<String, Object> getItem(int _index) {
			return _data.get(_index);
		}
		
		@Override
		public long getItemId(int _index) {
			return _index;
		}
		
		@Override
		public View getView(final int _position, View _v, ViewGroup _container) {
			LayoutInflater _inflater = getLayoutInflater();
			View _view = _v;
			if (_view == null) {
				_view = _inflater.inflate(R.layout.list_item_fruits, null);
			}
			
			final LinearLayout linear1 = _view.findViewById(R.id.linear1);
			final TextView textview1 = _view.findViewById(R.id.textview1);
			final TextView textview2 = _view.findViewById(R.id.textview2);
			
			textview1.setText(_data.get((int)_position).get("name").toString());
			textview2.setText(_data.get((int)_position).get("color").toString());
			
			return _view;
		}
	}
    
    private void setupClickListener() {
        listview1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                
                String fruitName = (String) fruitList.get(position).get("name");
                Toast.makeText(getActivity(), fruitName, Toast.LENGTH_SHORT).show();
            }
        });

    }
    
}




11. In onCreate event of MainActivity.java, add following codes in an add source directly block.


final ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this);

viewPagerAdapter.addFragment(new Fragment1(), "TextView");
viewPagerAdapter.addFragment(new Fragment2(), "Button"); viewPagerAdapter.addFragment(new Fragment3(), "ListView");

viewpager1.setAdapter(viewPagerAdapter);

new TabLayoutMediator(
        tablayout1,
        viewpager1,
        new TabLayoutMediator.TabConfigurationStrategy() {
            @Override
            public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) {
                tab.setText(viewPagerAdapter.getPageTitle(position));
            }
        }
).attach();

12. Add new event Import and put following codes in an add source directly block.



import androidx.viewpager2.widget.ViewPager2;

import com.google.android.material.tabs.TabLayoutMediator;

13. Save and run the project.



Comments

Popular posts from this blog

Simple car racing android game in Sketchware

Simple Audio recorder app in Sketchware

How to enable upload from webview in Sketchware?

Retrieve contact list in Sketchware

Creating a Drawing View in Sketchware