Как изменить setText при удалении данных - PullRequest
0 голосов
/ 21 июня 2019

Я хочу изменить текст кнопки при удалении элементов я уже проверил это getText, когда я getText показывает, что данные уже изменился, но когда я пытаюсь установить текст, он не показывает мне В таком случае, что мне делать?

Это мой 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>

1 Ответ

1 голос
/ 21 июня 2019

Создайте класс интерфейса, подобный этому; Вы можете установить много видов информации в качестве параметра об удаленном элементе и отправить его в свою деятельность.

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)
}

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...