I am creating two spinners: One for City and the other for Area in that particular city. As per the selection made by the user in the above spinners, a ListView will be displayed which will be different for different combinations of selections made by the user in spinners.I am fetching the data for the Listview from the database stored in the Firebase.The URL mentioned in the java code would change everytime.But the listview itself is not getting displayed.
The layout which has the spinners and the listview is as follows:
|
I am creating two spinners: One for City and the other for Area in that particular city. As per the selection made by the user in the above spinners, a ListView will be displayed which will be different for different combinations of selections made by the user in spinners.I am fetching the data for the Listview from the database stored in the Firebase.The URL mentioned in the java code would change everytime.But the listview itself is not getting displayed.
The layout which has the spinners and the listview is as follows:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="100dp"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select a City"
/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/selectCity"
android:entries="@array/city_name"
android:textSize="20sp"
android:singleLine="false"
android:prompt="@string/city_title"
android:outlineProvider="background"
android:background="@android:drawable/btn_dropdown"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select Area"
android:paddingTop="20sp"
/>
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/select_area"
android:background="@android:drawable/btn_dropdown"
>
</Spinner>
<ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/displayAllAstrologers"
></ListView>
</LinearLayout>
|
The java fragment code through which I am handling spinners and Listview are:
package com.example.hsports.weddingplanner.Fragments;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import com.example.hsports.weddingplanner.Activities.FrontPage;
import com.example.hsports.weddingplanner.Adapters.displayingListCategories;
import com.example.hsports.weddingplanner.R;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
/**
* Created by I324671 on 12/5/2016.
*/
public class Location_Selection extends Fragment {
ArrayList<String> listCategories=new ArrayList<>();
String categorySelected;
String citySelected="";
String areaSelected="";
public Location_Selection(String categorySelected)
{
this.categorySelected= this.categorySelected;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.city_selection_page,container,false);
final Spinner areaSelector=(Spinner)view.findViewById(R.id.select_area);
Spinner selectCity=(Spinner)view.findViewById(R.id.selectCity);
final ListView listView = (ListView) view.findViewById(R.id.displayAllAstrologers);
selectCity.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, final View view, int position, long id) {
final ArrayList<String> listAreas = new ArrayList<String>();
String s = parent.getItemAtPosition(position).toString();
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference reference = database.getReference(s);
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChildren()) {
for (DataSnapshot child : dataSnapshot.getChildren()) {
String areaId = child.getKey().toString();
String areaName = child.getValue().toString();
listAreas.add(areaName);
}
}
ArrayAdapter<String> adapter = new ArrayAdapter(view.getContext(),
android.R.layout.simple_spinner_item, listAreas);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
areaSelector.setAdapter(adapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
areaSelector.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
FirebaseDatabase database1 = FirebaseDatabase.getInstance();
DatabaseReference reference1 = database1.getReference("Astrologer-Hoodi/email");
reference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChildren()) {
for (DataSnapshot child : dataSnapshot.getChildren()) {
String getEmailNo = child.getKey().toString();
String getEmailId = child.getValue().toString();
listCategories.add(getEmailId);
}
}
listView.setAdapter(new displayingListCategories(getContext(), listCategories));
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
return view;
}
}
I am using a baseAdapter to inflate the ListView in the xml. So the Adapter clas which extends BaseAdapter is as follows:
package com.example.hsports.weddingplanner.Adapters;
import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CursorAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.hsports.weddingplanner.R;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
/**
* Created by I324671 on 12/5/2016.
*/
public class displayingListCategories extends BaseAdapter {
private Context mcontext;
public ArrayList<String> listCategories;
public displayingListCategories(Context context,ArrayList<String> listCategories) {
//super(context, c);
mcontext=context;
this.listCategories=listCategories;
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view= LayoutInflater.from(convertView.getContext()).inflate(R.layout.format_of_list_of_categories, parent, false);
ImageView imageView=(ImageView)view.findViewById(R.id.image_of_customer);
imageView.setImageResource(R.drawable.customer_photo);
TextView nameOfCustomer=(TextView)view.findViewById(R.id.name_of_customer);
TextView emailIdOfCustomer=(TextView)view.findViewById(R.id.email_id_of_customer);
TextView phoneOfCustomer=(TextView)view.findViewById(R.id.phone_no_of_customer);
nameOfCustomer.setText(listCategories.get(position));
emailIdOfCustomer.setText(listCategories.get(position));
phoneOfCustomer.setText(listCategories.get(position));
return view;
}
}
I am not getting the listview displayed. And I want the listview to be different for different selections in the spinners.
Look for actual issue posted here:
1 Answer(s)