根据Gridview中选择的项 动态改变数据

本文介绍如何在GridView中响应用户选择,实现数据的动态更新。通过监听GridView的选中事件,结合后台数据处理,实时更新数据显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      



package com.basedemo.my.xi.basedemo.fragment;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;

import com.basedemo.my.xi.basedemo.R;
import com.basedemo.my.xi.basedemo.activity.Home_FilialPayActivity;
import com.basedemo.my.xi.basedemo.adapter.MyBaseAdapter;
import com.basedemo.my.xi.basedemo.bean.ChangGuiPayBean;
import com.basedemo.my.xi.basedemo.bean.ChangGuiPayCommitBean;
import com.basedemo.my.xi.basedemo.fragment.BaseFragment;
import com.basedemo.my.xi.basedemo.net.NetPath;
import com.basedemo.my.xi.basedemo.utils.LogUtils;
import com.basedemo.my.xi.basedemo.utils.SPUtils;
import com.basedemo.my.xi.basedemo.utils.ToastUtils;
import com.basedemo.my.xi.basedemo.view.MyGridView;
import com.google.gson.Gson;
import com.yolanda.nohttp.rest.Response;

import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

//import com.astuetz.PagerSlidingTabStrip;

/**
 * @Author Xi
 * Created by zz.wbkj.xi on 2016/8/26.
 */
public class ChangGuiPayPageFragment extends BaseFragment {

    private String elder_id;
    private MyGridView gridView;
    private TextView tv_older_name;
    private TextView tv_home_name;
    private TextView tv_start_time;
    private String user_id;
    private TextView tv_end_date;
    private TextView tv_need_pay;
    private TextView tv_jifen_dixiao_rmb;
    private String end_time;
    private MyAdapter adapter;
    private EditText et_keyongjifen;
    private int keyongjifen_number;
    private Integer every_month_pay;
    private int rate;
    private Double input_jifen;
    private Double needpay;
    private double pay_money;
    private Button btn_pay;
    private int addMonth;

    @Override
    public void init() {
        user_id = (String) SPUtils.get(mContext,"user_id","");
        Bundle bundle = getArguments();//从activity传过来的Bundle
        if(bundle!=null){
            elder_id = bundle.getString("elder_id");
        }
    }

    @Override
    public int getLayouId() {
        return R.layout.page_changguipay;
    }

    @Override
    public void initView(View view) {
        tv_older_name = (TextView)view.findViewById(R.id.tv_older_name);
        tv_home_name = (TextView)view.findViewById(R.id.tv_home_name);
        tv_start_time = (TextView)view.findViewById(R.id.tv_start_time);
        tv_end_date = (TextView)view.findViewById(R.id.tv_end_date);
        et_keyongjifen = (EditText)view.findViewById(R.id.et_keyongjifen);
        tv_need_pay = (TextView)view.findViewById(R.id.tv_need_pay);
        tv_jifen_dixiao_rmb = (TextView)view.findViewById(R.id.tv_jifen_dixiao_rmb);
        btn_pay = (Button)view.findViewById(R.id.btn_pay);

        gridView = (MyGridView)view.findViewById(R.id.gridview);
    }

    @Override
    public void initData() {
        List<String> monthNumber = new ArrayList<>();
        monthNumber.clear();
        monthNumber.add("1个月");
        monthNumber.add("3个月");
        monthNumber.add("6个月");
        monthNumber.add("12个月");
        monthNumber.add("24个月");

        adapter = new MyAdapter(mContext,monthNumber);
        gridView.setAdapter(adapter);

        LogUtils.e(mContext,"user_id为:",user_id);
        Map<String,String> map = new HashMap<>();
        map.put("elder_id",elder_id);
        map.put("user_id",user_id);
        requestNet_POST(NetPath.CHANGGUI_PAY,1,map);

    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser && isVisible()){
            Map<String,String> map = new HashMap<>();
            map.put("elder_id",elder_id);
            map.put("user_id",user_id);
            requestNet_POST(NetPath.CHANGGUI_PAY,1,map);
        }
    }

    @Override
    public void initListener() {
        gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                adapter.setSelectedPosition(position);
            }
        });
        et_keyongjifen.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                if (TextUtils.isEmpty(et_keyongjifen.getText().toString().trim())){
                    et_keyongjifen.setHint("可用"+keyongjifen_number+"积分");
                    tv_jifen_dixiao_rmb.setText("积分充抵0.0元");
                    tv_need_pay.setText("¥"+needpay);
                }else if(Integer.valueOf(et_keyongjifen.getText().toString().trim())<=0){
                    et_keyongjifen.setText("");
                }else if(Integer.valueOf(et_keyongjifen.getText().toString().trim()) > keyongjifen_number){
                    ToastUtils.showToast(mContext,"输入的积分不能大于当前可用积分");
                    et_keyongjifen.setText("");
                }else {
                    input_jifen = Double.valueOf(et_keyongjifen.getText().toString().trim());
                    DecimalFormat df = new DecimalFormat("0.0");
                    String jifen_dixiao_rmb = df.format(input_jifen/rate);
                    tv_jifen_dixiao_rmb.setText("积分充抵"+jifen_dixiao_rmb+"元");
                    pay_money = Double.valueOf(needpay) - Double.valueOf(jifen_dixiao_rmb);
                    if (pay_money<0){
                        ToastUtils.showToast("缴纳金额不能小于0");
                        pay_money = 0;
                        et_keyongjifen.setText("");
                    }else {
                        tv_need_pay.setText("¥"+pay_money);
                    }
                }

            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
        btn_pay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 进行支付  传值给服务器
                Map<String,String> map = new HashMap<String, String>();
                map.put("elder_id",elder_id);
                map.put("user_id",user_id);
                map.put("month",String.valueOf(addMonth));
                String jifen = et_keyongjifen.getText().toString().trim();
                map.put("pay_points",TextUtils.isEmpty(jifen)? "0" : jifen);
                map.put("pay_money",tv_need_pay.getText().toString().substring(1));
                LogUtils.e(mContext,"提交 elder_id 为",elder_id);
                LogUtils.e(mContext,"提交 user_id 为",user_id);
                LogUtils.e(mContext,"提交 month 为",addMonth+"");
                LogUtils.e(mContext,"提交 pay_points 为",TextUtils.isEmpty(jifen)? "0" : jifen);
                LogUtils.e(mContext,"提交 pay_money 为",tv_need_pay.getText().toString().substring(1));
                requestNet_POST(NetPath.CHANGGUI_PAY_COMMIT,2,map);
            }
        });
    }

    @Override
    public void onSucceedPaser(int what, Gson gson, Response<String> response) {
        super.onSucceedPaser(what, gson, response);
        switch (what){
            case 1:
                try {
                    ChangGuiPayBean bean = gson.fromJson(response.get(),ChangGuiPayBean.class);
                    tv_older_name.setText(bean.getData().getElder_name());
                    tv_home_name.setText(bean.getData().getBeadhouse_name());
                    tv_start_time.setText(bean.getData().getStart_time());
                    end_time = bean.getData().getEnd_time();
                    LogUtils.e(mContext,"keyongjifen_number:---string",""+bean.getData().getPay_points());
                    keyongjifen_number = Integer.valueOf(bean.getData().getPay_points());
                    LogUtils.e(mContext,"keyongjifen_number:",""+keyongjifen_number);
                    et_keyongjifen.setHint("可用"+ keyongjifen_number +"积分");
                    LogUtils.e(mContext,"every_month_pay:---string",""+bean.getData().getCharge_std());
                    every_month_pay  = Integer.valueOf(bean.getData().getCharge_std());
                    LogUtils.e(mContext,"every_month_pay:",""+every_month_pay);
                    rate = bean.getData().getPoints_rate();


                    adapter.setSelectedPosition(0);
                }catch (Exception e){

                }
                break;

            case 2:
                try {
                    ChangGuiPayCommitBean bean = gson.fromJson(response.get(),ChangGuiPayCommitBean.class);
                    LogUtils.e(mContext,"已经提交了","");
                    if (bean.getData()==1){
                        ToastUtils.showToast(mContext,bean.getMsg());
//                        ((Home_FilialPayActivity)mContext).finish();
                        Map<String,String> map = new HashMap<>();
                        map.put("elder_id",elder_id);
                        map.put("user_id",user_id);
                        requestNet_POST(NetPath.CHANGGUI_PAY,1,map);
                    }else {
                        ToastUtils.showToast(mContext,bean.getMsg());
                    }


                }catch (Exception e){
                    LogUtils.e(mContext,"解析出错了","");
                }


                break;
        }
    }

    class MyAdapter extends MyBaseAdapter<String>{
        private int p ;
        public void setSelectedPosition(int position){
            this.p = position;
            notifyDataSetChanged();

            switch (position){
                case 0:
                    addMonth = 1;
                    break;
                case 1:
                    addMonth = 3;
                    break;
                case 2:
                    addMonth = 6;
                    break;
                case 3:
                    addMonth = 12;
                    break;
                case 4:
                    addMonth = 24;
                    break;
            }
            tv_end_date.setText(addMonth(end_time,addMonth));
            needpay = Double.valueOf(addMonth*every_month_pay);
            tv_need_pay.setText("¥"+(needpay));
            et_keyongjifen.setText("");
        }

        public MyAdapter(Context context, List<String> dataList) {
            super(context, dataList);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null){
                convertView = View.inflate(mContext,R.layout.item_changgui_monthnumber,null);
            }
            ImageView iv_bg = (ImageView)convertView.findViewById(R.id.iv_bg);
            TextView monthnumber = (TextView)convertView.findViewById(R.id.text);
            if (p == position){
                monthnumber.setTextColor(mContext.getResources().getColor(R.color.white));
                iv_bg.setImageResource(R.drawable.month_bg);
            }else {
                monthnumber.setTextColor(mContext.getResources().getColor(R.color.toolbar_bg));
                iv_bg.setImageResource(R.drawable.month);
            }
            monthnumber.setText(dataList.get(position));
            return convertView;
        }
    }

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    private String addMonth(String ymd,int number){
        String[] strs = ymd.split("-");
        String y = strs[0];
        String m = strs[1];
        String d = strs[2];
        ymd = y +"-"+ String.valueOf(Integer.valueOf(m)+number)+"-"+ d;
        Date date = null;
        try {
            date = sdf.parse(ymd);
            ymd = sdf.format(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return ymd;
    }
}

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f5f5f5"
    android:fillViewport="true"
    >

    <LinearLayout
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
        <!--style="@style/ToolbarSpinnerTheme"-->
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:background="@color/white"
            android:orientation="vertical">
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="45dp"
                android:layout_marginTop="18dp"
                android:gravity="center_vertical"
                android:paddingLeft="10dp"
                android:background="@drawable/kuang">
                <TextView
                    android:id="@+id/tv_older_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="15dp"
                    android:textColor="#666666"
                    android:text=""
                    />
                <TextView
                    android:id="@+id/tv_home_name"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:textSize="15dp"
                    android:textColor="#666666"
                    android:text=""/>
                <TextView
                    android:id="@+id/tv_start_time"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="5dp"
                    android:textSize="15dp"
                    android:textColor="#666666"
                    android:text=""/>
            </LinearLayout>


            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dp"
                android:layout_marginBottom="15dp"
                android:textSize="13dp"
                android:textColor="#ababab"
                android:gravity="center"
                android:text="请选择要缴费月数"/>
            <com.basedemo.my.xi.basedemo.view.MyGridView
                android:id="@+id/gridview"
                android:layout_width="match_parent"
                android:numColumns="3"
                android:horizontalSpacing="13dp"
                android:verticalSpacing="14dp"
                android:listSelector="@color/transparent"
                android:layout_height="match_parent"></com.basedemo.my.xi.basedemo.view.MyGridView>

            <View
                android:layout_width="match_parent"
                android:layout_height="1.5px"
                android:layout_marginTop="18dp"
                android:layout_marginBottom="15dp"
                android:background="#d9d9d9"/>
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_marginBottom="14dp"
                android:textSize="13dp"
                android:textColor="#ababab"
                android:text="本次缴费说明"/>
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dp">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textSize="13dp"
                    android:textColor="#999999"
                    android:layout_alignParentLeft="true"
                    android:text="缴纳后入住时长到:"/>
                <TextView
                    android:id="@+id/tv_end_date"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:textColor="@color/toolbar_bg"
                    android:textSize="13dp"
                    android:text=""/>
            </RelativeLayout>

            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:focusableInTouchMode="true"
                android:focusable="true"
                android:layout_marginBottom="20dp">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:textSize="13dp"
                    android:textColor="#999999"
                    android:text="使用积分冲抵金额:"/>

                <EditText
                    android:id="@+id/et_keyongjifen"
                    android:layout_width="wrap_content"
                    android:layout_height="18dp"
                    android:inputType="number"
                    android:textColor="#999999"
                    android:hint="可用0积分"
                    android:textSize="11dp"
                    android:gravity="center"
                    android:layout_alignParentRight="true"
                    android:background="@drawable/jifenkuang"
                    />

            </RelativeLayout>
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:textSize="13dp"
                    android:textColor="#999999"
                    android:text="本次合计缴纳金额:"/>
                <TextView
                    android:id="@+id/tv_need_pay"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:textColor="@color/toolbar_bg"
                    android:text=""/>
            </RelativeLayout>
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_marginTop="11dp"
                android:layout_height="wrap_content">
                <TextView
                    android:id="@+id/tv_jifen_dixiao_rmb"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:textSize="10dp"
                    android:textColor="#ff9900"
                    android:text="积分充抵 0.0元"/>
            </RelativeLayout>

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:textColor="#ff408f"
                android:textSize="13dp"
                android:layout_marginTop="24dp"
                android:layout_marginBottom="12dp"
                android:text="您的缴费会增加爱心值哦!"/>
        </LinearLayout>
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_marginTop="21dp"
            android:layout_marginBottom="21dp"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:layout_height="wrap_content">
            <Button
                android:id="@+id/btn_pay"
                android:layout_width="match_parent"
                android:layout_height="45dp"
                android:background="@drawable/zhifubg"
                android:layout_centerInParent="true"
                android:textColor="@color/white"
                android:textSize="20dp"
                android:text="立即付款"/>
        </RelativeLayout>

    </LinearLayout>
</ScrollView>








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值