How to add two fixed tab into my activity and get listview into that tabs

拟墨画扇 提交于 2020-01-16 23:40:13

问题


Hello I am creating an app with tab in that I am using one activity class called Cart as below

public class Cart extends AppCompatActivity {
FragmentManager mFragmentManager;
FragmentTransaction mFragmentTransaction;


@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_mycart);
    mFragmentManager = getSupportFragmentManager();
    mFragmentTransaction = mFragmentManager.beginTransaction();
    mFragmentTransaction.replace(R.id.containerView1,new MyCartTab()).commit();


}
}

In this activity I want to call Two Fixed tab that is show in below code

public class MyCartTab extends Fragment {

public static TabLayout tabLayout;
public static ViewPager viewPager;
public static int int_items = 2 ;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View x =  inflater.inflate(R.layout.mycartdata,null);
    tabLayout = (TabLayout) x.findViewById(R.id.carttabs);
    viewPager = (ViewPager) x.findViewById(R.id.cartviewpager);

    viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
    tabLayout.post(new Runnable() {
        @Override
        public void run() {
            tabLayout.setupWithViewPager(viewPager);
        }
    });
    return x;

}

class MyAdapter extends FragmentPagerAdapter {

    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position) {
            case 0:
                return new My_Menu_List();
            case 1:
                return new My_Extra_List();
            }
        return null;
    }

    @Override
    public int getCount() {

        return int_items;

    }
    @Override
    public CharSequence getPageTitle(int position) {

        switch (position) {
            case 0:
                return "MyCart";
            case 1:
                return "MyExtras";
        }
        return null;
    }
}
}

Here is one Tab activity file MyCart

public class My_Menu_List extends android.support.v4.app.ListFragment {

ArrayList<Product> cart_list = new ArrayList<Product>();
ArrayList<Extra> ecart_list = new ArrayList<Extra>();
SQLiteDatabase sqLite;
int count=0;
int totalCartItemCount =0;
int totalCartValue = 0;
View view;
final String[] qtyValues = {"1","2","3","4","5","6","7","8","9","10"};


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.myextralist, container, false);

    TextView itemText = (TextView) view.findViewById(R.id.item_text);
    TextView itemCount = (TextView) view.findViewById(R.id.cart_item_count);
    TextView totalAmount = (TextView) view.findViewById(R.id.total_cart_amount);
    Button checkout_cart = (Button) view.findViewById(R.id.checkout_cart);
    ListView lv2=(ListView) view.findViewById(R.id.my_cart_list);
    TextView cartEmpty = (TextView) view.findViewById(R.id.mycart_empty);
    checkout_cart.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            startActivity(new Intent(getActivity(),Customer_Payment.class));
        }
    });

    getCartData();
    try{
        totalCartItemCount = (cart_list.size()+ecart_list.size());
        totalCartValue =0;
        for (int temp1=0; temp1 < cart_list.size(); temp1++) {
            for (int temp2 = 0; temp2 < ecart_list.size(); temp2++) {
                totalCartValue = totalCartValue + Integer.parseInt(cart_list.get(temp1).getFinalValue()) + Integer.parseInt(ecart_list.get(temp2).getExtraCheckoutPrice());
            }
        }
    }catch(NumberFormatException n){n.printStackTrace();}

    if (totalCartItemCount == 0)
    {
        itemText.setVisibility(view.INVISIBLE);
        itemCount.setVisibility(view.INVISIBLE);
        totalAmount.setVisibility(view.INVISIBLE);
        checkout_cart.setVisibility(view.INVISIBLE);
        lv2.setVisibility(view.INVISIBLE);
        cartEmpty.setVisibility(view.VISIBLE);
    }

    else
    {
        itemText.setVisibility(view.VISIBLE);
        itemCount.setVisibility(view.VISIBLE);
        totalAmount.setVisibility(view.VISIBLE);
        checkout_cart.setVisibility(view.VISIBLE);
        lv2.setVisibility(view.VISIBLE);
        cartEmpty.setVisibility(view.INVISIBLE);

    }
    itemCount.setText("("+ totalCartItemCount + ")");
    totalAmount.setText("("+ totalCartValue +")");
    lv2.setAdapter(new custom_list_one(getActivity(),cart_list));

    return view;
}

class custom_list_one extends BaseAdapter
{
    private LayoutInflater layoutInflater;
    ViewHolder holder;
    private ArrayList<Product> cartList=new ArrayList<Product>();
    int cartCounter;
    Context context;

    public custom_list_one(Context context, ArrayList<Product> cart_list) {
        layoutInflater = LayoutInflater.from(context);
        this.cartList=cart_list;
        this.cartCounter= cartList.size();
        this.context = context;
    }

    @Override
    public int getCount() {

        return cartCounter;
    }

    @Override
    public Object getItem(int arg0) {

        return cartList.get(arg0);
    }

    @Override
    public long getItemId(int arg0) {

        return arg0;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent)
    {
        Product tempProduct = cart_list.get(position);

        if (convertView == null)
        {
            convertView = layoutInflater.inflate(R.layout.listone_custom, null);
            holder = new ViewHolder();
            holder.name = (TextView) convertView.findViewById(R.id.menu_name);
            holder.price = (TextView) convertView.findViewById(R.id.menu_price);
            holder.qty = (Spinner) convertView.findViewById(R.id.spinner1);
            holder.cancel = (ImageButton) convertView.findViewById(R.id.delete);
            holder.qty_text =(TextView) convertView.findViewById(R.id.qty_text);
            holder.final_value = (TextView) convertView.findViewById(R.id.menu_price);

            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.name.setText(tempProduct.getName());
        holder.price.setText("Rs "+tempProduct.getPrice());

        ArrayAdapter<String> aa=new ArrayAdapter<String>(context,R.layout.qty_spinner_item,qtyValues);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        holder.qty.setAdapter(aa);
        holder.qty.setSelection(Integer.parseInt(tempProduct.getMenuQty())-1);
        holder.final_value.setText("Rs "+Integer.parseInt(tempProduct.getPrice())*Integer.parseInt(tempProduct.getMenuQty()));
        holder.cancel.setOnClickListener(new MyPersonalClickListener("button_delete",tempProduct,context));
        holder.qty.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener(){
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,int selectionIndex, long id)
            {
                if ((parent.getSelectedItemPosition()+1) != Integer.parseInt(cart_list.get(position).getMenuQty())) {
                    sqLite=context.openOrCreateDatabase("mahatiffin", context.MODE_PRIVATE, null);
                    sqLite.execSQL("UPDATE CART SET MENU_QTY ='"+ (parent.getSelectedItemPosition()+1)+"' WHERE NAME ='"+cart_list.get(position).getName()+"'");
                    sqLite.execSQL("UPDATE CART SET FINAL_VALUE='" + (parent.getSelectedItemPosition()+1) * Integer.parseInt(cart_list.get(position).getPrice())  +"' WHERE NAME ='"+cart_list.get(position).getName()+"'");
                    sqLite.close();
                    getCartData();
                    notifyDataSetChanged();
                    //refresh data outside the listview - Cart Total, Total Items, Shipping Cost etc
                    View parentView = (View) view.getParent().getParent().getParent().getParent();

                    TextView txtTotalItems = (TextView) parentView.findViewById(R.id.cart_item_count);
                    TextView txtTotalAmount = (TextView) parentView.findViewById(R.id.total_cart_amount);

                    try{
                        totalCartItemCount = (cart_list.size()+ecart_list.size());
                        totalCartValue =0;
                        for (int temp1=0; temp1 < cart_list.size(); temp1++) {
                            for (int temp2 = 0; temp2 < ecart_list.size(); temp2++) {
                                totalCartValue = totalCartValue + Integer.parseInt(cart_list.get(temp1).getFinalValue()) + Integer.parseInt(ecart_list.get(temp2).getExtraCheckoutPrice());
                            }
                        }
                    }catch(NumberFormatException n){n.printStackTrace();}

                    txtTotalItems.setText("("+ totalCartItemCount + ")");
                    txtTotalAmount.setText("("+ totalCartValue +")");

                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0)
            {

            }
        });
        // notifyDataSetChanged();
        return convertView;
    }
    class ViewHolder
    {
        TextView name;
        TextView price;
        TextView qty_text;
        ImageButton cancel;
        Spinner qty;
        TextView final_value;

    }
}

public class MyPersonalClickListener implements View.OnClickListener
{

    String button_name;
    Context context;
    Product name;

    public MyPersonalClickListener(String button_name, Product name, Context context)
    {
        this.context=context;
        this.name = name;
        this.button_name = button_name;
    }

    @Override
    public void onClick(View v)
    {
        if (button_name == "button_delete")
        {
            sqLite=context.openOrCreateDatabase("mahatiffin", context.MODE_PRIVATE, null);
            sqLite.execSQL("DELETE FROM CART WHERE NAME ='"+ name.getName()+"'");
            sqLite.close();
            Toast.makeText(context,"Item "+name.getName()+" delete from Cart", Toast.LENGTH_SHORT).show();

            getCartData();
            View lView = (View) v.getParent().getParent();
            ((ListView) lView).setAdapter(new custom_list_one(context,cart_list));

            TextView txtTotalAmount = (TextView) view.findViewById(R.id.total_cart_amount);
            TextView txtTotalItems = (TextView) view.findViewById(R.id.cart_item_count);
            TextView itemText = (TextView) view.findViewById(R.id.item_text);
            Button checkout_cart = (Button) view.findViewById(R.id.checkout_cart);
            ListView listview2=(ListView) view.findViewById(R.id.my_cart_list);
            TextView cartEmpty = (TextView) view.findViewById(R.id.mycart_empty);

            try{
                totalCartItemCount = (cart_list.size()+ecart_list.size());
                totalCartValue =0;
                for (int temp1=0; temp1 < cart_list.size(); temp1++) {
                    for (int temp2 = 0; temp2 < ecart_list.size(); temp2++) {
                        totalCartValue = totalCartValue + Integer.parseInt(cart_list.get(temp1).getFinalValue()) + Integer.parseInt(ecart_list.get(temp2).getExtraCheckoutPrice());
                    }
                }
            }catch(NumberFormatException n){n.printStackTrace();}

            txtTotalItems.setText("("+ totalCartItemCount + ")");
            txtTotalAmount.setText("("+ totalCartValue +")");

            if (totalCartItemCount == 0)
            {
                itemText.setVisibility(view.INVISIBLE);
                txtTotalItems.setVisibility(view.INVISIBLE);
                txtTotalAmount.setVisibility(view.INVISIBLE);
                checkout_cart.setVisibility(view.INVISIBLE);
                listview2.setVisibility(view.INVISIBLE);
                cartEmpty.setVisibility(view.VISIBLE);
            }

            else
            {
                itemText.setVisibility(view.VISIBLE);
                txtTotalItems.setVisibility(view.VISIBLE);
                txtTotalAmount.setVisibility(view.VISIBLE);
                checkout_cart.setVisibility(view.VISIBLE);
                listview2.setVisibility(view.VISIBLE);
                cartEmpty.setVisibility(view.INVISIBLE);

            }

        }

    }

}
public void getCartData()
{
    Product tempCartItem;
    cart_list.clear();
    sqLite=getActivity().openOrCreateDatabase("mahatiffin", getActivity().MODE_PRIVATE, null);
    sqLite.execSQL("CREATE TABLE IF NOT EXISTS TB_MENU (ID INTEGER primary key autoincrement,NAME VARCHAR, DESCRIPTION VARCHAR, PRICE INTEGER)");
    sqLite.execSQL("CREATE TABLE IF NOT EXISTS CART (ID INTEGER primary key autoincrement, NAME VARCHAR, DESCRIPTION VARCHAR, PRICE INTEGER, MENU_QTY INTEGER, FINAL_VALUE INTEGER)");
    Cursor c=sqLite.rawQuery("SELECT  * FROM CART",null);
    count=0;
    if(c.moveToFirst())
    {
        do{
            tempCartItem = new Product();
            tempCartItem.setName(c.getString(c.getColumnIndex("NAME")));
            tempCartItem.setPrice(c.getString(c.getColumnIndex("PRICE")));
            tempCartItem.setMenuQty(c.getString(c.getColumnIndex("MENU_QTY")));
            tempCartItem.setFinalValue(c.getString(c.getColumnIndex("FINAL_VALUE")));
            cart_list.add(tempCartItem);
            count++;
        }while(c.moveToNext());

    }
    sqLite.close();
}
}

my code is correct but when i am Click into Cart activity page it will show me error. Here is my logcat

06-09 20:18:46.260 30923-30923/com.androidbelieve.MahaTiffin E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException at com.androidbelieve.MahaTiffin.My_Menu_List.onCreateView(My_Menu_List.java:84) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) at android.support.v4.view.ViewPager.populate(ViewPager.java:1177) at android.support.v4.view.ViewPager.populate(ViewPager.java:1025) at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1545) at android.view.View.measure(View.java:15172) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4842) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390) at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) at android.view.View.measure(View.java:15172) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4842) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.view.View.measure(View.java:15172) at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617) at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399) at android.view.View.measure(View.java:15172) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4842) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135) at android.view.View.measure(View.java:15172) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4842) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390) at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) at android.view.View.measure(View.java:15172) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4842) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.view.View.measure(View.java:15172) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4842) at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1390) at android.widget.LinearLayout.measureVertical(LinearLayout.java:681) at android.widget.LinearLayout.onMeasure(LinearLayout.java:574) at android.view.View.measure(View.java:15172) at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4842) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2167) at android.view.View.measure(View.java:15172) at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1850) at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1102) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1275) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1000) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4222) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) at android.view.Choreographer.doCallbacks(Choreographer.java:555) at android.view.Choreographer.doFrame(Choreographer.java:525) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4918) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(

I am new in android its my first app so please help to solve this error.Thank you in advance. Anyone plz help me i don't know what i can i do for this NullPointerException error.

This is my XML file for first tab and my second tab xml file is also same only name is diff..

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

<ListView
    android:id="@+id/my_cart_list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@+id/rr"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_weight="1"
    android:divider="#0af"/>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:id="@+id/rr"
    android:background="#FA0"
    android:layout_marginBottom="0dp">

    <TextView
        android:id="@+id/item_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Items"
        android:textColor="#000"
        android:textSize="17sp"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="20dp"/>

    <TextView
        android:id="@+id/cart_item_count"
        android:layout_toRightOf="@+id/item_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="(2)"
        android:textColor="#000"
        android:textSize="17sp"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="5dp"/>


    <TextView
        android:id="@+id/total_cart_amount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#000"
        android:textSize="20sp"
        android:layout_alignTop="@+id/cart_item_count"
        android:layout_centerHorizontal="true" />

    <Button
        android:id="@+id/checkout_cart"
        android:layout_width="wrap_content"
        android:layout_height="25dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginRight="4dp"
        android:layout_marginTop="4dp"
        android:padding="3dp"
        android:text="Checkout >>"
        android:textSize="16dp" />

    <TextView
        android:id="@+id/mycart_empty"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="CART IS EMPTY"
        android:gravity="center"
        android:textColor="#000"
        android:textSize="22sp"
        android:layout_marginTop="12dp"/>
</RelativeLayout>

</RelativeLayout>

来源:https://stackoverflow.com/questions/37729877/how-to-add-two-fixed-tab-into-my-activity-and-get-listview-into-that-tabs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!