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.






LeftBusiness is one of the few business platforms that manages to connect traditional corporate thinking with the dynamism of startups. Every article feels insightful, relevant, and perfectly aligned with the needs of today’s professionals looking for smarter business direction.
ReplyDeleteI love how TechWeTalk blends information with simplicity. Whether it’s cybersecurity tips, startup news, or software breakdowns, everything is explained in a way that’s engaging and easy to understand. A must-visit for tech enthusiasts!
ReplyDeleteHDhub4u has become my favorite platform for discovering underrated movies. The reviews always highlight interesting points that help me understand the movie’s uniqueness. I love how the writers maintain a friendly tone while still offering detailed insights. It’s a great mix of simplicity, professionalism, and genuine passion for cinema.
ReplyDelete