SO after looking at the samples from viewpagerindicator I realised that they are all in fragment form.
I wanted to do this without fragments which I tried to do but after it compiles it displays the first layout but does not swipe to the other views.
I was looking at the "SampleIconsDefault.java" (from the samples) and made my own and thought I had it right but I have no idea why it doesn't swipe.
The activity & adaptor:
package russellrargill.work.burghcoffeehouseapp;
import com.viewpagerindicator.IconPageIndicator;
import com.viewpagerindicator.IconPagerAdapter;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class MainActivity extends Activity {
//variables for the pager
ViewPager thePager;
IconPageIndicator theIconPageIndicator;
MyPagerAdapter theAdapter;
private Context cxt;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_layout);
//set the context
cxt = this;
theAdapter = new MyPagerAdapter();
thePager = (ViewPager)findViewById(R.id.the_pager);
thePager.setAdapter(theAdapter);
theIconPageIndicator = (IconPageIndicator)findViewById(R.id.icon_page_indicator);
theIconPageIndicator.setViewPager(thePager);
}//END onCreate()
class MyPagerAdapter extends PagerAdapter implements IconPagerAdapter {
String[] titles = new String[]{"Home","Menu","Stores","About Us","Contact"};
protected final int[] ICONS = new int[] {
R.drawable.perm_group_calendar,
R.drawable.perm_group_camera,
R.drawable.perm_group_device_alarms,
R.drawable.perm_group_location
};
#Override
public Object instantiateItem(ViewGroup collection, int position) {
LayoutInflater inflater = (LayoutInflater)cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.home_layout, null);
collection.addView(layout,0);
//TODO add layouts for each page
layout = inflater.inflate(R.layout.pagelayoot, null);
collection.addView(layout,1);
layout = inflater.inflate(R.layout.page2layoot, null);
collection.addView(layout,2);
return layout;
}
private int mCount = titles.length;
#Override
public int getCount() {
return mCount;
}
#Override
public CharSequence getPageTitle(int position) {
return titles[position % titles.length];
}
#Override
public int getIconResId(int index) {
return ICONS[index % ICONS.length];
}
public void setCount(int count) {
if (count > 0 && count <= 10) {
mCount = count;
notifyDataSetChanged();
}
}
#Override
public boolean isViewFromObject(View arg0, Object arg1) {
return (arg0==arg1);
}
}
}//END CLASS
The main xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center|top"
android:background="#000000"
android:clickable="true"
android:focusableInTouchMode="false"
android:padding="1dp"
tools:context=".HomeScreen" >
<LinearLayout
android:id="#+id/nav_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusableInTouchMode="true"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<com.viewpagerindicator.IconPageIndicator
android:id="#+id/icon_page_indicator"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
/>
<android.support.v4.view.ViewPager
android:id="#+id/the_pager"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="1"
/>
</LinearLayout>
<ScrollView
android:id="#+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="#id/nav_layout" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="banana\nbabababba\newfewfewfg\nwefewf"
android:textColor="#FFFFFF"
/>
</LinearLayout>
</ScrollView>
the other 2 layouts (almost identical so I'll only post one)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="#+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/textView3"
android:layout_centerHorizontal="true"
android:text="TEST"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="#+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/textView2"
android:layout_toLeftOf="#+id/textView4"
android:text="A"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="#+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/textView1"
android:layout_toLeftOf="#+id/textView3"
android:text="IS"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="#+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="98dp"
android:layout_toLeftOf="#+id/textView2"
android:text="THIS"
android:textAppearance="?android:attr/textAppearanceLarge" />
Ignore some of the messiness of it all, it was slightly rushed.
Any assistance as to why it doesn't scroll would be greatly appreciated.
one of the fragments......these have to be independant for each fragment you create.......and make a note that my adapter may be different from yours i made a change in the adapter so that i don't have to use the "context" thing again and again...
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class FragmentPlaylists extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_b, container, false);
}
}
i am building an app right now which does the same thing....but it has many things extra you would have to sort it out...would you like the code for that?
code for the adapter
package sourcecode.jazzplayer;
import java.util.List;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.Fragment;
import android.support.v4.app.ListFragment;
public class ViewPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
private static String[] titles = new String[] {"Songs", "My Playlists", "Artists","Albums"};
public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
#Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
#Override
public int getCount() {
return this.fragments.size();
}
#Override
public String getPageTitle( int position )
{
return titles[ position ];
}
}
code for the activity that creates the fragments
import java.util.List;
import java.util.Vector;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
public class MyMusic extends FragmentActivity{
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mymusic);
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, FragmentSongs.class.getName()));
fragments.add(Fragment.instantiate(this, FragmentArtists.class.getName()));
fragments.add(Fragment.instantiate(this, FragmentPlaylists.class.getName()));
fragments.add(Fragment.instantiate(this, FragmentAlbums.class.getName()));
ViewPagerAdapter adapter = new ViewPagerAdapter(super.getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(adapter);
pager.setOffscreenPageLimit(4);
pager.setCurrentItem(0);
}
}
Related
I am unable to remove a present fragment in my second fragment while trying to replace it from the first fragment along with trying to open the second fragment from the first fragment on a click of a button.
Here is my code
FirstFragment.java
package com.example.testanderase;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.support.design.widget.TextInputEditText;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.List;
import java.util.Objects;
public class FirstFragment extends Fragment implements View.OnClickListener{
TextInputEditText inputEditText;
Button enterButton;
String getMessage;
#Nullable
#Override
public View onCreateView(#NonNull LayoutInflater inflater, #Nullable ViewGroup container, #Nullable Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.first_fragment,container,false);
inputEditText = view.findViewById(R.id.enter_edit_txt_input);
enterButton = view.findViewById(R.id.first_fragment_btn);
enterButton.setOnClickListener(this);
return view;
}
#RequiresApi(api = Build.VERSION_CODES.KITKAT)
#Override
public void onClick(View v) {
getMessage = inputEditText.getText().toString();
SecondFragment secondFragment = new SecondFragment();
Bundle b = new Bundle();
b.putString("data",getMessage);
secondFragment.setArguments(b);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.second_fragment_layout,secondFragment);
//transaction.add(R.id.second_fragment_layout,secondFragment);
transaction.commit();
***Below here I am trying to change the code
***In order to open the second fragment from the first fragment
/assert getFragmentManager() != null;
FragmentManager fm = getFragmentManager();
fm.beginTransaction().replace(R.id.second_fragment_layout,secondFragment).commit();/
//fm.beginTransaction().replace(SecondFragment.newInstance());
}
}
first_fragment.xml
<?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="vertical"
android:gravity="center">
<LinearLayout
android:id="#+id/first_fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp">
<android.support.design.widget.TextInputEditText
android:id="#+id/enter_edit_txt_input"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="#string/input"
android:textAlignment="center"
android:gravity="center_horizontal" />
</android.support.design.widget.TextInputLayout>
<Button
android:id="#+id/first_fragment_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="#string/enter"
android:background="#color/black"
android:textColor="#color/white"
android:textAppearance="#style/TextAppearance.AppCompat.Large"
/>
</LinearLayout>
</LinearLayout>
SecondFragment.java
package com.example.testanderase;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputEditText;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class SecondFragment extends Fragment implements View.OnClickListener{
TextView textView;
Button enterButton;
String firstFragmentValue;
Toast t;
#Nullable
#Override
public View onCreateView(#NonNull LayoutInflater inflater, #Nullable ViewGroup container, #Nullable Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.second_fragment,container,false);
textView = view.findViewById(R.id.second_fragment_txt_view);
enterButton = view.findViewById(R.id.second_fragment_btn);
enterButton.setOnClickListener(this);
//assert getArguments() != null;
//firstFragmentValue = getArguments().getString("data");
//textView.setText(firstFragmentValue);
Bundle bundle = getArguments();
if(bundle != null)
{
String name = bundle.getString("data");
textView.setText(name);
Toast.makeText(getContext(),"passed data "+name,Toast.LENGTH_SHORT).show();
}
//textView.setText(firstFragmentValue);
return view;
}
#Override
public void onClick(View v) {
//
ToastButton();
/*assert getFragmentManager() != null;
FirstFragment firstFragment = new FirstFragment();
FragmentManager fragmentTransaction = getFragmentManager();
fragmentTransaction.beginTransaction().replace(R.id.first_fragment_layout, firstFragment).commit();*/
}
public void ToastButton()
{
if(t!=null)
{
t.cancel();
}
else
{
Toast.makeText(getContext(),"Clicked",Toast.LENGTH_SHORT).show();
}
}
}
second_fragment.xml
<?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="vertical"
android:gravity="center">
<TextView
android:id="#+id/second_fragment_txt_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp"
android:text="#string/change_text"
android:textAlignment="center"
android:gravity="center_horizontal"
android:textAppearance="#style/TextAppearance.AppCompat.Large"
/>
<Button
android:id="#+id/second_fragment_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="#string/back_button_text"
android:background="#color/black"
android:textColor="#color/white"
android:textAppearance="#style/TextAppearance.AppCompat.Large"
/>
</LinearLayout>
SectionPageAdapter.java
package com.example.testanderase;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class SectionPageAdapter extends FragmentPagerAdapter {
private final List<Fragment> fragmentList = new ArrayList<>();
private final List<String> fragmentListTitle = new ArrayList<>();
public void addFragment(Fragment fragment, String title)
{
fragmentList.add(fragment);
fragmentListTitle.add(title);
}
public SectionPageAdapter(FragmentManager fm)
{
super(fm);
}
#Override
public Fragment getItem(int i) {
return fragmentList.get(i);
}
#Nullable
#Override
public CharSequence getPageTitle(int position) {
return fragmentListTitle.get(position);
}
#Override
public int getCount() {
return fragmentList.size();
}
}
MainActivity.java
package com.example.testanderase;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity{
private SectionPageAdapter mSectionPageAdapter;
private ViewPager mainViewPager;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSectionPageAdapter = new SectionPageAdapter(getSupportFragmentManager());
mainViewPager = findViewById(R.id.container);
setMainViewPager(mainViewPager);
TabLayout tabLayout = findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mainViewPager);
}
public void setMainViewPager(ViewPager viewPager)
{
SectionPageAdapter adapter = new SectionPageAdapter(getSupportFragmentManager());
adapter.addFragment(new FirstFragment(),"FIRST");
adapter.addFragment(new SecondFragment(),"SECOND");
viewPager.setAdapter(adapter);
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity"
android:id="#+id/main_layout"
android:layout_margin="20dp">
<android.support.design.widget.TabLayout
android:id="#+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
android:id="#+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
where is R.id.second_fragment_layout
anyway change your second_fragment.xml to this
<?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="vertical"
android:gravity="center">
<LinearLayout
android:id="#+id/second_fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="#+id/second_fragment_txt_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp"
android:text="hello"
android:textAlignment="center"
android:gravity="center_horizontal"
android:textAppearance="#style/TextAppearance.AppCompat.Large"
/>
<Button
android:id="#+id/second_fragment_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="back"
android:background="#000"
android:textColor="#fff"
android:textAppearance="#style/TextAppearance.AppCompat.Large"
/>
</LinearLayout>
</LinearLayout>
and to open the second fragment from the first fragment on a click of a button
first make mainViewPager static
static ViewPager mainViewPager
put this on first fragment onclick
int page =1;
mainViewPager.setCurrentItem(page);
to back to first fragment
put this on second fragment onclick
int page =0;
mainViewPager.setCurrentItem(page);
ts working for me.!
I have written a simple application for navigation Drawer based on this tutorial: https://www.youtube.com/watch?v=tZ2DNC3FIic
but there is a problem when I run the application.
The Error is i am having a blank or Empty Drawer List when i launch the application, and instead of that i Got the list in the application launch.
like this image:
This is the main_activity layout:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="#+id/drawer_layout"
android:layout_height="match_parent"
tools:context="com.subhi.tabhost.MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:id="#+id/main_content"
android:layout_height="match_parent"></RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:id="#+id/drawer_pane"
android:layout_gravity="start"
android:background="#FF4081"
android:layout_height="match_parent"></RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:id="#+id/profile_box"
android:padding="8dp"
android:gravity="center_vertical"
android:layout_height="100dp">
<ImageView
android:id="#+id/icon"
android:layout_margin="5dp"
android:layout_width="50dp"
android:background="#drawable/ic_launcher"
android:layout_height="50dp" />
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_toRightOf="#+id/icon"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="#000000"
android:text="Subhi"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="#000000"
android:text="Subhi"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
<ListView
android:layout_width="match_parent"
android:id="#+id/nav_list"
android:layout_below="#id/profile_box"
android:choiceMode="singleChoice"
android:background="#ffffff"
android:layout_height="match_parent"></ListView>
</android.support.v4.widget.DrawerLayout>
and this is the MainActivity class:
package com.subhi.tabhost;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.RelativeLayout;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
DrawerLayout drawerLayout;
RelativeLayout drawerPane;
ListView lvNav;
List<NavItem> listNavItems;
List<Fragment> listFragments;
ActionBarDrawerToggle actionBarDrawerToggle;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
drawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout);
drawerPane= (RelativeLayout) findViewById(R.id.drawer_pane);
lvNav =(ListView)findViewById(R.id.nav_list);
listNavItems=new ArrayList<NavItem>();
listNavItems.add(new NavItem("sHome", "HomePage", R.drawable.ic_launcher));
listNavItems.add(new NavItem("Setting", "HomePage", R.drawable.ic_launcher));
listNavItems.add(new NavItem("Setting", "HomePage", R.drawable.ic_launcher));
NavListAdapter navListAdapter=new NavListAdapter(getApplicationContext(),R.id.nav_list,listNavItems);
lvNav.setAdapter(navListAdapter);
listFragments=new ArrayList<Fragment>();
listFragments.add(new MyHome());
listFragments.add(new MySettings());
listFragments.add(new MyAbout());
FragmentManager fragmentManager=getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.main_content,listFragments.get(0)).commit();
setTitle(listNavItems.get(0).getTitle());
lvNav.setItemChecked(0, true);
drawerLayout.closeDrawer(drawerPane);
lvNav.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.main_content, listFragments.get(position)).commit();
setTitle(listNavItems.get(position).getTitle());
lvNav.setItemChecked(position, true);
drawerLayout.closeDrawer(drawerPane);
}
});
actionBarDrawerToggle=new ActionBarDrawerToggle(this,drawerLayout,R.string.drawer_opened,R.string.drawer_closed){
#Override
public void onDrawerOpened(View drawerView) {
invalidateOptionsMenu();
super.onDrawerOpened(drawerView);
}
#Override
public void onDrawerClosed(View drawerView) {
invalidateOptionsMenu();
super.onDrawerClosed(drawerView);
}
};
drawerLayout.setDrawerListener(actionBarDrawerToggle);
}
#Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
actionBarDrawerToggle.syncState();
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
if(actionBarDrawerToggle.onOptionsItemSelected(item))
return true;
return super.onOptionsItemSelected(item);
}
}
and this is the Navlist Adapter Class:
package com.subhi.tabhost;
import android.annotation.SuppressLint;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;
/**
* Created by subhi on 2/9/2016.
*/
public class NavListAdapter extends ArrayAdapter<NavItem> {
Context context;
int reslayout;
List<NavItem> listNavItem;
public NavListAdapter(Context context, int reslayout, List<NavItem> listNavItem) {
super(context, reslayout, listNavItem);
this.context=context;
this.reslayout=reslayout;
this.listNavItem=listNavItem;
}
#SuppressLint("ViewHolder") #Override
public View getView(int position, View convertView, ViewGroup parent) {
View v=View.inflate(context, reslayout, null);
TextView tvtitle= (TextView) v.findViewById(R.id.titlemain);
TextView tvsubtitle=(TextView)v.findViewById(R.id.subtitle);
ImageView navicon= (ImageView) v.findViewById(R.id.nav_icon);
NavItem navItem=listNavItem.get(position);
tvtitle.setText(navItem.getTitle());
tvsubtitle.setText(navItem.getSubtitle());
navicon.setImageResource(navItem.getResicon());
return v;
}
}
and this is the NavItem Class:
package com.subhi.tabhost;
/**
* Created by subhi on 2/9/2016.
*/
public class NavItem {
private String title;
private String subtitle;
private int resicon;
public NavItem(String title,String subtitle, int resicon ) {
this.subtitle = subtitle;
this.resicon = resicon;
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSubtitle() {
return subtitle;
}
public void setSubtitle(String subtitle) {
this.subtitle = subtitle;
}
public int getResicon() {
return resicon;
}
public void setResicon(int resicon) {
this.resicon = resicon;
}
}
and this is one of the Fragments that i used when the item is clicked:
package com.subhi.tabhost;
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;
/**
* Created by subhi on 2/9/2016.
*/
public class MyHome extends Fragment {
#Nullable
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v=inflater.inflate(R.layout.fragment_home,container,false);
return super.onCreateView(inflater, container, savedInstanceState);
}
}
and this is the item_nav_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:padding="10dp"
android:layout_height="match_parent">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:src="#drawable/ic_launcher"
android:id="#+id/nav_icon" />
<LinearLayout
android:layout_width="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_margin="10dp"
android:layout_height="40dp">
<TextView
android:layout_width="wrap_content"
android:id="#+id/titlemain"
android:textStyle="bold"
android:textSize="18sp"
android:text="Titile"
android:textColor="#000"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:text="title2"
android:textSize="18sp"
android:id="#+id/subtitle"
android:textColor="#000"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
The error is from this line
new NavListAdapter(getApplicationContext(),R.id.nav_list,listNavItems)
The parameter that you have for R.id.nav_list should be a R.layout.nav_item where nav_item.xml is the layout for a row in the NavListAdapter.
Here
NavListAdapter navListAdapter=new NavListAdapter(getApplicationContext(),R.id.nav_list,listNavItems);
you pass R.id.nav_list which then you want to inflate with
View v=View.inflate(context, reslayout, null);
reslayout cannot be R.id, it has to be layout file (R.layout).
EDIT
Now your main_layout is wrong. Should be like this:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="#+id/drawer_layout"
android:layout_height="match_parent"
tools:context="com.subhi.tabhost.MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:id="#+id/main_content"
android:layout_height="match_parent"></RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:id="#+id/drawer_pane"
android:layout_gravity="start"
android:background="#FF4081"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:id="#+id/profile_box"
android:padding="8dp"
android:gravity="center_vertical"
android:layout_height="100dp">
<ImageView
android:id="#+id/icon"
android:layout_margin="5dp"
android:layout_width="50dp"
android:background="#drawable/ic_launcher"
android:layout_height="50dp" />
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_toRightOf="#+id/icon"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="#000000"
android:text="Subhi"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:textSize="18sp"
android:textStyle="bold"
android:textColor="#000000"
android:text="Subhi"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
<ListView
android:layout_width="match_parent"
android:id="#+id/nav_list"
android:layout_below="#id/profile_box"
android:choiceMode="singleChoice"
android:background="#ffffff"
android:layout_height="match_parent"></ListView>
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
In my app in need to hide layout when i click out side (MobileFragment) of that layout. You can understand the whole problem from given below images.
This is my app sturcture:
This is the problem:
Here is my code:
MainActivity.java
package com.example.admin.smsrupee;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private TabLayout tabLayout;
private ViewPager viewPager;
private ImageView menu_icon,profile_icon;
private LinearLayout layout,profile_layout;
ViewPagerFinder adapter;
CoordinatorLayout coordinatorLayout;
private int[] tabIcons = {
R.drawable.mobile_icon,
R.drawable.dth_icon,
R.drawable.data_card_icon,
R.drawable.landline_icon,
R.drawable.electricity_icon,
R.drawable.gas_icon
};
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
viewPager = (ViewPager)findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
menu_icon = (ImageView)findViewById(R.id.menu_icon);
profile_icon = (ImageView)findViewById(R.id.profile_icon);
layout = (LinearLayout)findViewById(R.id.menu_list);
profile_layout = (LinearLayout)findViewById(R.id.profile_menu_list);
menu_icon.setOnClickListener(this);
profile_icon.setOnClickListener(this);
viewPager.setOnClickListener(this);
coordinatorLayout.setOnClickListener(this);
setupTabIcons();
FragmentStatePagerAdapter a = (FragmentStatePagerAdapter)viewPager.getAdapter();
Fragment ft = (Fragment)a.instantiateItem(viewPager, viewPager.getCurrentItem());
System.out.println("Fragment---" + ft);
}
private void setupTabIcons() {
Drawable mobile_img;
Resources res1 = getResources();
mobile_img = ContextCompat.getDrawable(MainActivity.this, R.drawable.mobile_icon);
mobile_img.setBounds(0, 0, 20, 25);
TextView tabOne = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
tabOne.setText("Mobile");
tabOne.setCompoundDrawables(null,mobile_img, null, null);
tabLayout.getTabAt(0).setCustomView(tabOne);
Drawable dth_img ;
Resources res2 = getResources();
dth_img = ContextCompat.getDrawable(MainActivity.this, R.drawable.dth_icon);
dth_img.setBounds(0, 0, 20, 25);
TextView tabTwo = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
tabTwo.setText("DTH");
tabTwo.setCompoundDrawables(null, dth_img, null, null);
tabLayout.getTabAt(1).setCustomView(tabTwo);
Drawable data_img ;
Resources res3 = getResources();
data_img = ContextCompat.getDrawable(MainActivity.this, R.drawable.data_card_icon);
data_img.setBounds(0, 0, 20, 25);
TextView tabThree = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
tabThree.setText("Data Card");
tabThree.setCompoundDrawables(null, data_img, null, null);
tabLayout.getTabAt(2).setCustomView(tabThree);
Drawable landline_img ;
Resources res4 = getResources();
landline_img = ContextCompat.getDrawable(MainActivity.this, R.drawable.landline_icon);
landline_img.setBounds(0, 0, 20, 25);
TextView tabFour = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
tabFour.setText("LandLine");
tabFour.setCompoundDrawables(null,landline_img, null, null);
tabLayout.getTabAt(3).setCustomView(tabFour);
Drawable electricity_img ;
Resources res5 = getResources();
electricity_img = ContextCompat.getDrawable(MainActivity.this, R.drawable.electricity_icon);
electricity_img.setBounds(0, 0, 20, 25);
TextView tabFive = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
tabFive.setText("Electricity");
tabFive.setCompoundDrawables(null,electricity_img, null, null);
tabLayout.getTabAt(4).setCustomView(tabFive);
Drawable gas_img ;
Resources res6 = getResources();
gas_img = ContextCompat.getDrawable(MainActivity.this, R.drawable.gas_icon);
gas_img.setBounds(0, 0, 20, 25);
TextView tabSix = (TextView) LayoutInflater.from(this).inflate(R.layout.custom_tab, null);
tabSix.setText("Gas");
tabSix.setCompoundDrawables(null,gas_img , null, null);
tabLayout.getTabAt(5).setCustomView(tabSix);
}
private void setupViewPager(ViewPager viewPager) {
adapter = new ViewPagerFinder(getSupportFragmentManager());
adapter.addFragment(new MobileFragment(), "Mobile");
adapter.addFragment(new DTHFragment(), "DTH");
adapter.addFragment(new DataCardFragment(), "Data Card");
adapter.addFragment(new LandLineFragment(), "Landline");
adapter.addFragment(new ElectricityFragment(), "Electricity");
adapter.addFragment(new GasFragment(), "Gas");
viewPager.setAdapter(adapter);
}
#Override
public void onClick(View v) {
switch (v.getId()){
case R.id.menu_icon:
if(layout.getVisibility() == View.INVISIBLE){
layout.setVisibility(View.VISIBLE);
}else{
layout.setVisibility(View.INVISIBLE);
}
break;
case R.id.profile_icon:
if(profile_layout.getVisibility() == View.INVISIBLE) {
profile_layout.setVisibility(View.VISIBLE);
} else {
profile_layout.setVisibility(View.INVISIBLE);
}
break;
default:
break;
}
}
class ViewPagerFinder extends FragmentStatePagerAdapter{
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerFinder(FragmentManager manager) {
super(manager);
}
#Override
public Fragment getItem(int position){
return mFragmentList.get(position);
}
#Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
#Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
public Fragment returnFragment(int position){
return mFragmentList.get(position);
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
#Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
/* if (id == R.id.action_settings) {
return true;
}*/
return super.onOptionsItemSelected(item);
}
}
MobileFragemnt.java
package com.example.admin.smsrupee;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
/**
* Created by admin on 11/4/2015.
*/
public class MobileFragment extends android.support.v4.app.Fragment {
EditText editText;
private ImageView menuicon;
private LinearLayout layout;
private RelativeLayout relativeLayout;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
#Nullable
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.mobile_fragment, container, false);
return view;
}
public static MobileFragment newInstance(int index) {
MobileFragment f = new MobileFragment();
Bundle args = new Bundle();
args.putInt("index", index);
f.setArguments(args);
return f;
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="#+id/cordinator"
android:clickable="true"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:fitsSystemWindows="true"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent" android:theme="#style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar android:id="#+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"
android:background="?attr/colorPrimary" app:popupTheme="#style/AppTheme.PopupOverlay">
<include layout="#layout/content_main"/>
</android.support.v7.widget.Toolbar>
</android.support.design.widget.AppBarLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#2f5392"
app:layout_behavior="#string/appbar_scrolling_view_behavior"
/>
<android.support.design.widget.TabLayout
android:id="#+id/tabs"
android:layout_width="match_parent"
app:layout_behavior="#string/appbar_scrolling_view_behavior"
android:layout_height="wrap_content"
app:tabMode="scrollable"
app:tabGravity="fill"/>
<android.support.v4.view.ViewPager
android:id="#+id/viewpager"
android:layout_width="match_parent"
android:layout_marginTop="50dp"
android:layout_height="match_parent"
app:layout_behavior="#string/appbar_scrolling_view_behavior" >
</android.support.v4.view.ViewPager>
<!--<include layout="#layout/dummy_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:layout_behavior="#string/appbar_scrolling_view_behavior"
/>-->
<include layout="#layout/menu_contents"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_behavior="#string/appbar_scrolling_view_behavior"
/>
<include layout="#layout/profile_contents"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_behavior="#string/appbar_scrolling_view_behavior"
/>
</android.support.design.widget.CoordinatorLayout>
mobile_fragment.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/mobile_relative_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="info.androidhive.materialtabs.fragments.OneFragment">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#2f5392"
android:id="#+id/view" />
<LinearLayout
android:layout_width="wrap_content"
android:id="#+id/linearlayout_one1"
android:layout_marginTop="30dp"
android:layout_centerHorizontal="true"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Prepaid"
android:textColor="#2f5392"
android:layout_marginRight="20dp"
android:id="#+id/prepaid_radio1"
android:checked="false" />
<RadioButton
android:layout_width="wrap_content"
android:textColor="#2f5392"
android:layout_height="wrap_content"
android:text="Postpaid"
android:id="#+id/postpaid_radio1"
android:checked="false" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:id="#+id/linearlayout_two1"
android:layout_below="#+id/linearlayout_one1"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="20dp"
android:orientation="vertical"
>
<EditText
android:layout_width="300dp"
android:hint="Enter Your Mobile Number"
android:textSize="15sp"
android:text="123xxxxxx"
android:id="#+id/mobile_number1"
android:paddingLeft="30dp"
android:layout_height="wrap_content"
android:drawableRight="#drawable/editbox_icon"
/>
<EditText
android:layout_width="300dp"
android:hint="Select Operator"
android:paddingLeft="30dp"
android:id="#+id/operator1"
android:textSize="15sp"
android:layout_height="wrap_content"
android:drawableRight="#drawable/down_arrow"
/>
<EditText
android:layout_width="300dp"
android:drawableLeft="#drawable/indian_rupee"
android:hint=" Amount"
android:id="#+id/amount1"
android:textSize="15sp"
android:layout_height="wrap_content"
android:drawableRight="#drawable/browse_plan"
/>
</LinearLayout>
<Button
android:layout_below="#+id/linearlayout_two1"
android:layout_marginTop="35dp"
android:layout_width="250dp"
android:id="#+id/proceed1"
android:layout_centerHorizontal="true"
android:layout_height="37dp"
android:background="#2f5392"
android:textColor="#ffffff"
android:text="PROCEED"/>
</RelativeLayout>
content_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="#dimen/activity_vertical_margin"
android:paddingBottom="#dimen/activity_vertical_margin"
app:layout_behavior="#string/appbar_scrolling_view_behavior"
tools:showIn="#layout/activity_main" tools:context=".MainActivity">
<RelativeLayout
android:id="#+id/relative_one"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="#drawable/sms_rupee_logo"
/>
<ImageView
android:id="#+id/menu_icon"
android:layout_width="wrap_content"
android:layout_marginRight="10dp"
android:layout_alignParentRight="true"
android:layout_height="wrap_content"
android:src="#drawable/menu_icon"
/>
<ImageView
android:id="#+id/wallet_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:layout_toLeftOf="#+id/menu_icon"
android:src="#drawable/wallet_icon" />
<ImageView
android:id="#+id/profile_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:layout_toLeftOf="#+id/wallet_icon"
android:src="#drawable/profile_icon" />
</RelativeLayout>
</RelativeLayout>
profile_content.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:id="#+id/profile_menu_list"
android:layout_width="165dp"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:clickable="true"
android:layout_alignParentTop="true"
android:background="#2f5392"
android:orientation="vertical"
android:visibility="invisible"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_gravity="center_vertical"
android:padding="8dp"
android:layout_height="wrap_content"
android:src="#drawable/add_user"/>
<TextView
android:id="#+id/register"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_gravity="center_vertical"
android:padding="8dp"
android:text="Register"
android:textColor="#fff"
android:textSize="17dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:padding="8dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="#drawable/login"/>
<TextView
android:id="#+id/login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="3dp"
android:padding="8dp"
android:text="Login"
android:textColor="#ffffff"
android:textSize="17dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:padding="8dp"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:src="#drawable/referral"/>
<TextView
android:id="#+id/referrals"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_gravity="center_vertical"
android:padding="8dp"
android:text="Referrals"
android:textColor="#ffffff"
android:textSize="17dp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:padding="8dp"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content"
android:src="#drawable/recharge"/>
<TextView
android:id="#+id/configure_easychange"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:layout_gravity="center_vertical"
android:padding="8dp"
android:text="Configure EasyCharge"
android:textColor="#ffffff"
android:textSize="17dp"
/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
Firstly, you can get an instance of an Activity inside its fragment by help of getActivity() method. Use this instance to call any method of the activity from your fragment like this :-
((MainActivity) getActivity()).methodName();
Secondly, I would suggest you to convert that bar into a NavigationDrawer which will benefit you by providing you with a much cleaner user interface with more cleaner transitions.
MainActivity
public class HomeActivity extends AppCompatActivity {
public static BottomNavigationView mNavigationView;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
//-----------------------------------------------| Bottom navigation menu
mNavigationView = (BottomNavigationView) findViewById(R.id.bottom_navigation);
mNavigationView.setOnNavigationItemSelectedListener(new ActionHandler());
}
private class ActionHandler implements BottomNavigationView.OnNavigationItemSelectedListener {
//-----------------------------------------------| Bottom navigation menu listener
#Override
public boolean onNavigationItemSelected(#NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_menu:
getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.enter_from_left, 0).add(android.R.id.content, new MenuFragment(), "myFragmentTag").addToBackStack("tag").commit(); // without FrameLayout
return true;
case R.id.action_account:
//
return true;
}
return false;
}
}
}
fragment_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/root_view"
android:background="#android:color/transparent"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".views.fragments.MenuFragment">
<LinearLayout
android:orientation="vertical"
android:layout_marginEnd="150dp"
android:background="#color/colorBackgroundGrey"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:background="#color/colorPrimary"
android:layout_width="match_parent"
android:layout_height="250dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="#+id/header_photo"
app:civ_border_width="1dp"
app:civ_border_color="#color/colorLightGrey"
app:tint="#color/colorWhite"
android:src="#drawable/ic_add_photo"
android:layout_centerInParent="true"
android:layout_width="140dp"
android:layout_height="140dp"/>
<TextView
android:id="#+id/nav_header_title"
android:textColor="#color/colorWhite"
android:layout_marginTop="10dp"
android:text="#string/app_name"
android:layout_alignParentBottom="true"
android:layout_centerInParent="true"
android:layout_marginBottom="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="#+id/items_recycler_view"
tools:listitem="#layout/item_menu"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>
MemuFragment
public class MenuFragment extends Fragment {
private UserModel mUser;
#Nullable
#Override
public View onCreateView(#NonNull LayoutInflater inflater, #Nullable ViewGroup container, #Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_menu, container, false);
//getActivity().onBackPressed();
((RelativeLayout) view.findViewById(R.id.root_view)).setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
Utility.getInstance().onBackFragment(Objects.requireNonNull(getActivity()).getSupportFragmentManager(), new MenuFragment());
}
});
return view;
}
}
Utility
public class Utility {
private String TAG = this.getClass().getSimpleName();
private static Utility mUtility;
public static Utility getInstance() {
if (mUtility == null) {
mUtility = new Utility();
}
return mUtility;
}
//===============================================| Add fragment | Replace fragment | Remove fragment
//https://stackoverflow.com/questions/18634207/difference-between-add-replace-and-addtobackstack
public void onAddFragment(FragmentManager mManager, Fragment mFragment){
//getSupportFragmentManager().beginTransaction().add(android.R.id.content, new FragmentHome(), "myFragmentTag").addToBackStack("tag").commit(); // without FrameLayout
mManager.beginTransaction().setCustomAnimations(R.anim.fragment_fade_enter, 0).add(R.id.home_container, mFragment).addToBackStack(mFragment.getTag()).commitAllowingStateLoss(); //with back press
//getActivity().getSupportFragmentManager().beginTransaction().setCustomAnimations(R.anim.fragment_fade_enter, 0).replace(layout, mFragment).addToBackStack(mFragment.getTag()).commitAllowingStateLoss(); //with back press
}
public void onReplaceFragment(FragmentManager mManager, Fragment mFragment){
mManager.beginTransaction()
.setCustomAnimations(R.anim.fragment_fade_enter, 0)
.replace(R.id.home_container, mFragment)
.addToBackStack(null)
.commit();
}
public void onRemoveFragment(FragmentManager mFragmentManager, Fragment mFragment){
mFragmentManager.beginTransaction()
.setCustomAnimations(R.anim.fragment_fade_enter, 0)
.remove(mFragment)
.addToBackStack(null)
.commit();
}
public void onBackFragment(FragmentManager mFragmentManager, Fragment mFragment){
if(mFragmentManager.getBackStackEntryCount() > 0) {
mFragmentManager.popBackStack(mFragment.getTag(), 0);
//getActivity().getSupportFragmentManager().popBackStack(new CampaignFragment().getTag(), 0);
}
}
public void onShowFragmentDialog(FragmentManager mFragmentManager, BottomSheetDialogFragment mFragment){
mFragment.setCancelable(false);
mFragment.show(mFragmentManager, mFragment.getTag());
}
}
Went through many demos and was not able to figure out how to get the imageview work in list view.
Tried the code however the image is not visible in listview. Other details are working fine in the list view
Please help.
Following is the code
The mainactivity has tabhost. Under the second tab listview is present.
listdata is the data that i need in the list.
MyBaseAdapter is for the adapter needed to load data in listview.
MainActivity.java
package com.example.trial;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.NumberPicker;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import android.widget.Toast;
public class MainActivity extends Activity {
ListView list;
String[] dish={"Baby Corn Satay","Dum Aloo","Kadai Paneer","Methi Mutter Malai","Paneer Butter Masala","Saag Panner","Veg Kolhapuri"};
String[] about={"Baby Corn with marinade in a skewer","Baby Poatatoes in a spicy gravy","Kadhai paneer","Methi and peas in malai","Cottage cheese in butter masala","Cottage cheese in gravy","Spicy veg mix"};
String[] dprice={"250","300","350","250","350","250","300"};
Integer[] icon={R.drawable.baby_corn_satay,R.drawable.dum_aloo,R.drawable.kadai_paneer,R.drawable.methi_mutter_malai,R.drawable.paneer_butter_masaala,R.drawable.saag_paneer,R.drawable.veg_kolhapuri};
ArrayList<ListData> myList=new ArrayList<ListData>();
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabHost th=(TabHost) findViewById (R.id.tabhost);
th.setup();
TabSpec specs=th.newTabSpec("tag1");
specs.setContent(R.id.tab1);
specs.setIndicator("Beverages");
th.addTab(specs);
list=(ListView)findViewById(R.id.list);
getInList();
list.setAdapter(new MyBaseAdapter(MainActivity.this,myList));
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
#Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Toast.makeText(MainActivity.this, "You Clicked at " +dish[+ position], Toast.LENGTH_SHORT).show();
}
});
specs=th.newTabSpec("tag2");
specs.setContent(R.id.tab2);
specs.setIndicator("Cuisines");
th.addTab(specs);
specs=th.newTabSpec("tag3");
specs.setContent(R.id.tab3);
specs.setIndicator("Desserts");
th.addTab(specs);
specs=th.newTabSpec("tag4");
specs.setContent(R.id.tab4);
specs.setIndicator("Tri");
th.addTab(specs);
}
private void getInList(){
for(int i=0;i<7;i++)
{
ListData ld=new ListData();
ld.setAbout(about[i]);
ld.setDish(dish[i]);
ld.setDprice(dprice[i]);
ld.seticon(icon[i]);
myList.add(ld);
}
}
}
MainActivity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TabHost
android:id="#+id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabWidget
android:id="#android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:id="#android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
android:id="#+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="Orientation" >
<Button
android:id="#+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="529dp"
android:layout_marginTop="221dp"
android:text="Tab1"
tools:ignore="HardcodedText" />
</RelativeLayout>
<RelativeLayout
android:id="#+id/tab2"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="Orientation" >
<ListView
android:id="#+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="TooDeepLayout" >
</ListView>
</RelativeLayout>
<RelativeLayout
android:id="#+id/tab3"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="Orientation" >
<Button
android:id="#+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="529dp"
android:layout_marginTop="221dp"
android:text="Tab3"
tools:ignore="HardcodedText" />
</RelativeLayout>
<RelativeLayout
android:id="#+id/tab4"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:ignore="Orientation" >
<Button
android:id="#+id/button44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="529dp"
android:layout_marginTop="221dp"
android:text="tab4"
tools:ignore="HardcodedText" />
</RelativeLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
</RelativeLayout>
MyBaseAdapter.java
package com.example.trial;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.NumberPicker;
import android.widget.TextView;
public class MyBaseAdapter extends BaseAdapter {
ArrayList<ListData> myList=new ArrayList<ListData>();
LayoutInflater inflater;
Context context;
public MyBaseAdapter(Context context,ArrayList<ListData> myList){
this.myList=myList;
this.context=context;
inflater=LayoutInflater.from(this.context);
}
#Override
public int getCount() {
// TODO Auto-generated method stub
return myList.size();
}
#Override
public ListData getItem(int position) {
// TODO Auto-generated method stub
return myList.get(position);
}
#Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
#Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
MyViewHolder mvh;
if(convertView==null)
{
convertView=inflater.inflate(R.layout.dishview,null);
mvh=new MyViewHolder();
convertView.setTag(mvh);
}
else
{
mvh=(MyViewHolder) convertView.getTag();
}
mvh.dish = detail (convertView,R.id.dish,myList.get(position).getDish());
mvh.dprice= detail (convertView,R.id.price,myList.get(position).getDprice());
mvh.about = detail (convertView,R.id.about,myList.get(position).getAbout());
mvh.icon= idetail(convertView,R.id.icon,myList.get(position).geticon());
NumberPicker np = (NumberPicker) convertView.findViewById(R.id.qty);
np.setMaxValue(9);
np.setMinValue(1);
np.setValue(1);
Button b = (Button) convertView.findViewById(R.id.b1);
b.setTag(convertView);
return convertView;
}
private ImageView idetail(View v,int resId,int icon)
{
ImageView iv=(ImageView) v.findViewById(resId);
iv.setImageResource(resId);
return iv;
}
private TextView detail(View v,int resId,String text)
{
TextView tv=(TextView)v.findViewById(resId);
tv.setText(text);
return tv;
}
private static class MyViewHolder{
TextView about,dish,dprice;
ImageView icon;
}
}
ListData.java
package com.example.trial;
import android.widget.NumberPicker;
public class ListData {
String dish;
String about;
String dprice;
Integer icon;
public String getDish() {
return dish;
}
public void setDish(String dish) {
this.dish = dish;
}
public String getAbout() {
return about;
}
public void setAbout(String about) {
this.about = about;
}
public String getDprice() {
return dprice;
}
public void setDprice(String dprice) {
this.dprice = dprice;
}
public Integer geticon() {
return icon;
}
public void seticon(Integer imageId) {
this.icon = imageId;
}
}
dishview.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="#+id/about"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="#+id/icon"
android:layout_alignLeft="#+id/dish"
android:text="Discription"
android:textAppearance="?android:attr/textAppearanceSmall"
tools:ignore="HardcodedText" />
<ImageView
android:id="#+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignTop="#+id/dish"
android:layout_marginLeft="49dp"
android:maxHeight="100dp"
android:maxWidth="100dp"
android:src="#drawable/ic_launcher"
tools:ignore="ContentDescription" />
<TextView
android:id="#+id/dish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="36dp"
android:layout_marginTop="27dp"
android:layout_toRightOf="#+id/icon"
android:text="Dish name"
android:textAppearance="?android:attr/textAppearanceMedium"
tools:ignore="HardcodedText" />
<TextView
android:id="#+id/price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="#+id/about"
android:layout_marginRight="146dp"
android:layout_toLeftOf="#+id/qty"
android:text="Price"
android:textAppearance="?android:attr/textAppearanceMedium"
tools:ignore="HardcodedText" />
<NumberPicker
android:id="#+id/qty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
tools:ignore="NewApi" />
<Button
android:id="#+id/b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="#+id/price"
android:layout_marginLeft="41dp"
android:layout_toRightOf="#+id/qty"
android:text="Add"
tools:ignore="HardcodedText" />
</RelativeLayout>
Kindly help me out.
Thanks in anticipation.
Can you please paste your activity_main.xml? Moreso, it is preferable you use actionbar tabs.
Just changed position of layout and it stopped working
Clean and rebuild. Likely your resource ids in binary XML files and R.java are out of sync.
Now that you've included logcat, java.lang.ClassCastException: android.widget.ImageView cannot be cast to android.widget.TextView in detail() are also indicative of this - the resource ids you're passing to the method are valid TextViews but at least in one case it is referring to an ImageView in binary XML.
the mistake is in MyBaseAdapter.java
simple mistake, parameters mismatched.
insted of
private ImageView idetail(View v,int resId,int icon)
{
ImageView iv=(ImageView) v.findViewById(resId);
iv.setImageResource(resId);
return iv;
}
we need to change it to
private ImageView idetail(View v,int resId,int icon)
{
ImageView iv=(ImageView) v.findViewById(R.id.icon);
iv.setImageResource(icon);
return iv;
}
I'm working on a little app which is supposed to display 3 screens : Talks, Papers and Choices. I've discovered fragments a few days ago and I would like to use this feature for my app, but unfortunately, it doesn't work for a particular reason…
My fragment:
package info.androidhive.tabsswipe;
import java.io.IOException;
import java.util.List;
import be.unamur.confpers.beans.Paper;
import be.unamur.confpers.xml.XMLParser2;
import info.androidhive.tabsswipe.R;
import info.androidhive.tabsswipe.adapter.PaperAdapter;
import android.app.ListFragment;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import be.unamur.confpers.beans.Paper;
import be.unamur.confpers.xml.XMLParser2;
import be.unamur.confpers.*;
public class PapersFragment extends Fragment {
private PaperAdapter listAdapter;
private Context myContext;
List<Paper> papers = null;
private List<Paper> papersParser () {
try {
XMLParser2 parser = new XMLParser2();
papers = parser.parse(getActivity().getApplicationContext().getAssets().open("talks.xml"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return papers;
};
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_papers, container, false);
ListView lv = (ListView) getActivity().findViewById(R.id.check1);
listAdapter = new PaperAdapter(getActivity(),papers);
//lv.setAdapter(listAdapter);
return v;
}
}
My adapter :
package info.androidhive.tabsswipe.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.LayoutInflater;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import be.unamur.confpers.beans.Paper;
import info.androidhive.tabsswipe.R;
import java.util.ArrayList;
import java.util.List;
public class PaperAdapter extends BaseAdapter implements OnClickListener {
private Context context;
private List<Paper> papers;
private LayoutInflater inflater;
public PaperAdapter(Context context, List<Paper> papers) {
this.context = context;
this.papers = papers;
inflater = LayoutInflater.from(context);
}
#Override
public int getCount(){
return papers.size();
}
#Override
public Object getItem(int position) {
return papers.get(position);
}
#Override
public long getItemId(int position) {
return position;
}
#Override
public View getView(int position, View view, ViewGroup viewGroup) {
// We only create the view if its needed
if (view == null) {
view = inflater.inflate(R.layout.child_row, null);
// Set the click listener for the checkbox
view.findViewById(R.id.check1).setOnClickListener(this);
}
Paper p = (Paper) getItem(position);
// Set the example text and the state of the checkbox
CheckBox cb = (CheckBox) view.findViewById(R.id.check1);
//cb.setChecked(p.isSelected());
// We tag the data object to retrieve it on the click listener.
TextView paper = (TextView)view.findViewById(R.id.papername);
if (paper != null)
paper.setText(p.getTitle());
TextView author = (TextView)view.findViewById(R.id.authorname);
if( author!= null )
author.setText( p.getAuthor() );
return view;
}
/*#Override
/** Will be called when a checkbox has been clicked. */
public void onClick(View view) {
}
}
My XML files :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_above="#+id/buttonsave" >
<ListView
android:id="#android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<TextView
android:id="#+id/papername"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
<Button
android:id="#+id/buttonsave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="#string/btn_save" />
<Button
android:id="#+id/buttonload"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:text="#string/btn_load" />
</RelativeLayout>
Group_row.xml
<?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="wrap_content"
android:layout_alignParentTop="true"
android:orientation="horizontal" >
<TextView
android:id="#+id/papername"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingLeft="50dp"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
Child_row.xml :
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:orientation="horizontal"
android:shrinkColumns="0">
<!-- 2 columns -->
<TableRow
android:id="#+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:paddingLeft="20dp"
>
<CheckBox
android:id="#+id/check1"
android:layout_height="wrap_content"
android:layout_width="30dp"
android:focusable="false"
/>
<TextView
android:id="#+id/papername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:textSize="16sp"
android:textStyle="normal"
android:layout_marginLeft="5dp" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="50dp"
android:paddingBottom="15dp" >
<TextView
android:id="#+id/authorname"
android:layout_span="2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:textSize="16sp"
android:textStyle="italic"
android:layout_marginRight="5dp" />
</TableRow>
</TableLayout>
If I leave
//lv.setAdapter(listAdapter);
commented, it loads, but as soon as I uncomment it, it crashes with the following error:
12-06 11:28:05.240: E/AndroidRuntime(1362): java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.ListView
with reference to this precise line.
You make cast checkBox to ListView !
It should be like that.
ListView lv = (ListView) getActivity().findViewById(R.id.list);
I gusse here is the error in your code:
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_papers, container, false);
ListView lv = (ListView) getActivity().findViewById(R.id.check1);
//Here your casting checkBox to Listview Pleas Check it out
listAdapter = new PaperAdapter(getActivity(),papers);
//lv.setAdapter(listAdapter);
return v;
}
just replace it like
ListView lv = (ListView) v.findViewById(R.id.ListviewName);