1

I'm using below code to populate my fragment with ListView which works Fine. Now I would need to separate the Listview and add Textview in between. So, thus I need to now show two ListView, Listview A and ListView B with each separate Data i.e ListView A will show Data A and ListView B will show Data B.

I would like to start Listview B only when Listview A Ends instead of occupying half half length similar to below image

enter image description here

and apply onClicklistener separately for Listview B similar to A.

How can I do this..??

Thanks in advance.

My Fragment.java file is,

package com.nepalpolice.cdp;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

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


/**
 * Created by Sagar on 2017/09/23.
 */


public class club extends Fragment  {
    // Array of strings storing country names
    String[] countries = new String[]{
            "Royal Physicist of CDP",
            "MSC Physics of CDP",
            "Msc PHYSICS 2073B.S BATCH ",

    };

    // Array of integers points to images stored in /res/drawable-ldpi/
    int[] flags = new int[]{
            R.drawable.rpl,
            R.drawable.cdpl,
            R.drawable.mscl,

    };

    // Array of strings to store currencies
    String[] currency = new String[]{
            "This page is Dedicated with Informative trolls and memes.",
            "This Page is Dedicated for information",
            "Join this page for news and Notices",

    };

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_club, container, false);
// Each row in the list stores country name, currency and flag
        List<HashMap<String, String>> aList = new ArrayList<HashMap<String, String>>();

        for (int i = 0; i < 3; i++) {
            HashMap<String, String> hm = new HashMap<String, String>();
            hm.put("txt", "Country : " + countries[i]);
            hm.put("cur", "Currency : " + currency[i]);
            hm.put("flag", Integer.toString(flags[i]));
            aList.add(hm);
        }

        // Keys used in Hashmap
        String[] from = {"flag", "txt", "cur"};

        // Ids of views in listview_layout
        int[] to = {R.id.flag, R.id.txt, R.id.cur};

        // Instantiating an adapter to store each items
        // R.layout.listview_layout defines the layout of each item
        SimpleAdapter adapter = new SimpleAdapter(getActivity(), aList, R.layout.listview_layout, from, to);
        // Getting a reference to listview of main.xml layout file
        ListView listView = (ListView) view.findViewById(R.id.listview);
        // Setting the adapter to the listView
        listView.setAdapter(adapter);
        listView.setOnItemClickListener(itemClickListener);
        return view;
    }

// Setting the adapter to the listView


    // Item Click Listener for the listview
    OnItemClickListener itemClickListener = new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View container, int position, long id) {
            // Getting the Container Layout of the ListView
            if(position == 0/*or any other position*/){
                Fragment fragment = new royal();
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction().replace(R.id.fragment_frame, fragment).addToBackStack(null).commit();
            }
            else if(position == 1){
                Fragment fragment = new cdp();
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction().replace(R.id.fragment_frame, fragment).addToBackStack(null).commit();

            } // etc...

            else if(position == 2){
                Fragment fragment = new msc();
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction().replace(R.id.fragment_frame, fragment).addToBackStack(null).commit();

            } // etc...
        }
    };
}

and my listview_layout.xml file is

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/flag"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/hello"
        android:paddingTop="10dp"
        android:paddingRight="10dp"
        android:paddingBottom="10dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="15dp" />

        <TextView
            android:id="@+id/mero"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10px"
            android:textAppearance="?android:attr/textAppearanceSmall"
            />

        <TextView
            android:id="@+id/cur"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="10dp" />


    </LinearLayout>
</LinearLayout>

and my fragment_club.xml file is

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <ListView
        android:id="@+id/listview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
BlueYeti81
  • 67
  • 10

1 Answers1

0

I wouldn't recommend what you done. Better to use recyclerview which is more powerful then ordinary listview. First you have to build recyclerview with header refer following post : https://inducesmile.com/android/add-header-to-android-recyclerview/

As per your requirement you want to load next set of data when user scroll reaches the end recyclerview so you have to add scroll listener which is tell whether you reached recyclerview end or not. You can achieve this refer below post:

https://medium.com/@ayhamorfali/android-detect-when-the-recyclerview-reaches-the-bottom-43f810430e1e

Once you got know when you reached end of recyclerview then you have to add new data's into dataset and refresh the recyclerview.

Dinesh
  • 6,500
  • 10
  • 42
  • 77
  • Thank you for your guidance and suggestions. I'm totally new to Android although I already published 5 apps on playstore but still I'm starting to make sense of coding. So what you have suggested me is for now is far from what I could do.....It would be easy and I could understand and learn if only you could provide me with solution and I searched on google but couldn't find any tutorials on same topic...so would be more beneficiary for future ones too – BlueYeti81 Mar 17 '18 at 10:52
  • @BlueYeti81 It's my pleasure to share what i learnt from my experience. :) – Dinesh Mar 17 '18 at 10:54