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
Post a Comment