首页 > 解决方案 > 删除数据时如何更改setText

问题描述

当我删除我已经检查过getText的项目时,我想更改我的按钮文本,当我getText时它显示数据已经更改但是当我尝试setText时,它没有显示给我在这种情况下,我应该做什么?

这是我的 f_productAdapter

package com.example.together.Adapter;

import android.content.Context;
import android.media.Image;
import android.util.Log;
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.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.example.together.Model.FuneralProdcutOrder;
import com.example.together.R;
import com.squareup.picasso.Picasso;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import static com.example.together.Activities.EditProfileActivity.TAG;

public class f_productAdapter extends BaseAdapter {

    Button b;


    LayoutInflater inflater = null;

    private ArrayList<FuneralProdcutOrder> list;


    public f_productAdapter(ArrayList<FuneralProdcutOrder> f_order) {
        super();
        list = f_order;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return list.get(position).hashCode();
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {

            if(convertView == null) {
                inflater = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                convertView = inflater.inflate(R.layout.item_funeralorder, parent, false);
            }
        TextView tv_name = convertView.findViewById(R.id.productnm); //상품이름
        TextView tv_price = convertView.findViewById(R.id.productpri); //상품 가격
        ImageView tv_img = convertView.findViewById(R.id.pro_img);
        Button tv_delete = convertView.findViewById(R.id.deleteBtn);

        FuneralProdcutOrder getProlist = list.get(position);

        tv_name.setText(getProlist.getName());
        tv_price.setText(getProlist.getPrice());
        Picasso.get().load(getProlist.getImg()).fit().into(tv_img);


        LayoutInflater inflaters = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View Toplayout =  inflaters.inflate(R.layout.activity_goodbyepet_reservation_result, null );
//
        b = Toplayout.findViewById(R.id.f_orderBtn);

        TextView test = Toplayout.findViewById(R.id.toolbar_title);


        Log.e("test",test.getText()+"");


//        Log.e("view context", parent.getContext()+"");
//        Log.e("view position", position+"");
//        Log.e("view count", list.size()+"");
//        Log.e("view",b.getText()+"");
//        b.setText("테스트");




        b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.e("view alert" ,"확실히 버튼 객체를 찾았습니다 눌림");

            }
        });


        tv_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                list.remove(position);
                b.setText("Show me~~~~ u r change!!!");
                notifyDataSetChanged();
                Log.d(TAG, "onClick: What is you?"+list.size());
            }
        });

        return convertView;
    }
}

这是我的预订结果活动

package com.example.together.Activities.GoodbyePet;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.support.v7.widget.Toolbar;

import com.example.together.Adapter.f_productAdapter;
import com.example.together.Model.FuneralProdcutOrder;
import com.example.together.R;

import java.lang.reflect.Array;
import java.util.ArrayList;

public class GoodbyepetReservationResultActivity extends AppCompatActivity {

//    private TextView tvParent, tvChild;


    Toolbar myToolbar;

    ListView funeralview;

    Button Btn;

    private ArrayList<FuneralProdcutOrder> f_order = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_goodbyepet_reservation_result);


            int total_price = 0;
            //리스트뷰선언
        funeralview = findViewById(R.id.funeral_order);

        //예약 버튼

        Btn = findViewById(R.id.f_orderBtn);

        //툴바 선언
        myToolbar = findViewById(R.id.my_toolbar);
        setSupportActionBar(myToolbar);

        //액션바 왼쪽에 버튼
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_btn_back);
        getSupportActionBar().setDisplayShowTitleEnabled(false);


            for (int i = 0; i < MyCategoriesExpandableListAdapter.parentItems.size(); i++ ) {

                for (int j = 0; j < MyCategoriesExpandableListAdapter.childItems.get(i).size(); j++ ){

                    String isChildChecked = MyCategoriesExpandableListAdapter.childItems.get(i).get(j).get(ConstantManager.Parameter.IS_CHECKED);

                    if (isChildChecked.equalsIgnoreCase(ConstantManager.CHECK_BOX_CHECKED_TRUE)) {

//                        tvParent.setText(tvParent.getText() + MyCategoriesExpandableListAdapter.childItems.get(i).get(j).get(ConstantManager.Parameter.SUB_CATEGORY_NAME));
//                        tvChild.setText(tvChild.getText() + MyCategoriesExpandableListAdapter.childItems.get(i).get(j).get(ConstantManager.Parameter.SUB_CATEGORY_PRICE));
                        String name =  MyCategoriesExpandableListAdapter.childItems.get(i).get(j).get(ConstantManager.Parameter.SUB_CATEGORY_NAME);
                        String price = MyCategoriesExpandableListAdapter.childItems.get(i).get(j).get(ConstantManager.Parameter.SUB_CATEGORY_PRICE);
                        String img = MyCategoriesExpandableListAdapter.childItems.get(i).get(j).get(ConstantManager.Parameter.SUB_CATEGORY_IMAGE);

                            f_order.add(new FuneralProdcutOrder(name,price,img));
                            total_price = total_price + Integer.parseInt(price);


                    }

                }

            }

            f_productAdapter orAdapter = new f_productAdapter(f_order);
//            orAdapter.setHasStableId(true);
            Log.e("view activiey", f_order.size()+"안녕");
            funeralview.setAdapter(orAdapter);


            Btn.setText(f_order.size()+"개   " + total_price+" 원 예약 신청하기");


            Btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {



                }
            });


    }

    //액션바 등록
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.alldelete_manu, menu) ;

        return true ;
    }


    //액션바 클릭 이벤트
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                //                ((TextView)findViewById(R.id.textView)).setText("SEARCH") ;
                return true;
            case R.id.settings:
                //                ((TextView)findViewById(R.id.textView)).setText("ACCOUNT") ;
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }


}

当我删除按钮直接更改按钮文本也更改但 setText() 不起作用时,我想做什么更改如何更改?

点击删除按钮

  tv_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                list.remove(position);
                b.setText("Show me~~~~ u r change!!!");
                notifyDataSetChanged();
                Log.d(TAG, "onClick: What is you?"+list.size());
            }
        });

我想更改按钮文本

 Btn.setText(f_order.size()+"개   " + total_price+" 원 예약 신청하기");

这是我的 XML 包含我想要更改文本的按钮

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

    <android.support.v7.widget.Toolbar
        android:id="@+id/my_toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/mdtp_white"
        android:elevation="4dp"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="예약 상세서"
            android:layout_gravity="center"
            android:id="@+id/toolbar_title"
            android:textSize="20sp"
            />

    </android.support.v7.widget.Toolbar>



        <ListView
            android:id="@+id/funeral_order"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="0.3"
            android:drawSelectorOnTop="false">

        </ListView>


    <Button
        android:id="@+id/f_orderBtn"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0.8"
        android:layout_margin="10dp"
        android:text="바뀌어주세요"
        android:background="@drawable/button_radius"
        android:textSize="18dp"/>




</LinearLayout>

标签: androidlayout

解决方案


像这样创建一个接口类;您可以将多种信息设置为有关已删除项目的参数并将其发送到您的活动。

public interface ItemSelectedListener{
        void onItemSelected(boolean isDeleted);
    }

在您的适配器中初始化您的界面;

private List<ItemSelectedListener> mItemSelectedSubscribers = new ArrayList<ItemSelectedListener>();

在您的适配器中添加此方法;

public void subscribeItemSelection(ItemSelectedListener listener) {
        mItemSelectedSubscribers .add(listener);
    }

在您的点击事件中设置此循环;

tv_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
for (ItemSelectedListener listener : mItemSelectedSubscribers ) {
    listener.onItemSelected(true);
                }
                list.remove(position);
                b.setText("Show me~~~~ u r change!!!");
                notifyDataSetChanged();
                Log.d(TAG, "onClick: What is you?"+list.size());
            }
        });

在您的活动中,实现您的界面,您将设置一个已实现的方法。这个方法看起来像这样;

boolean isDeleted;
    @Override
        public void onItemSelected(boolean isDeleted) {
            this.isDeleted = isDeleted;
        }

您现在知道项目是否已删除。删除按钮后,您可以使用您的方法更改文本。

if(isDeleted){
btn.setText(changeText)
}

希望这有帮助!


推荐阅读