メインアクティビティからリストビューの変更を検出する方法

フランクD。

概要:アイテムがリストビューに追加またはリストビューから削除されたときに、メインアクティビティ内でcalculate()関数をトリガーする方法が必要です

背景:私のAndroidアプリケーションは、リストビューをリストアイテムで埋めます。リストアイテムには、クリックするとリストからアイテムを削除するテキストビューとイメージボタン(削除)が含まれます。リストの変更を追跡するためにカスタムアダプタを使用しています。これはすべて正常に機能します。

私の主な活動では、calulate()と呼ばれる関数のリスト内の値に基づいていくつかの計算が行われます。アイテムがリストに追加またはリストから削除されるたびに、この関数を呼び出したいと思います。しかし、これが可能かどうか、そしてそのような機能をどのように実装するかはわかりません。

notifyDataSetChanged()が呼び出されたときに通知されるregisterDataSetObserver()を使用してオブザーバーを追加できることに気付きました。しかし、これが私が必要としているものであるかどうか、そしてこれをどのように実装するかはわかりません。どんな助けや提案も大歓迎です。

これが私のCustomListAdapterです:

public class CustomListAdapter extends BaseAdapter {         

static final String TAG = "CustomListAdapter";
private Context context;
ArrayList <String> listArray;
LayoutInflater inflater;

public CustomListAdapter(Context context, List <String> inputArray) {                                                        
    super();
    this.context = context;
    this.listArray = (ArrayList<String>) inputArray;
}                                                                           


 @Override
    public int getCount() {
        return listArray.size();    // total number of elements in the list
    }

    @Override
    public String getItem(int i) {
        return listArray.get(i);    // single item in the list
    }

    @Override
    public long getItemId(int i) {
        return i;                   // index number
    }

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

     if(V == null) {
            LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            V = vi.inflate(R.layout.selected_drug_list_item, null);
        }

     //place text in textview
    String listItem = listArray.get(position);
    TextView textView = (TextView) V.findViewById(R.id.selectedDrugName);
    textView.setText(listItem);        

    ImageButton deleteSelectedDrugButton = (ImageButton) V.findViewById(R.id.deleteSelectedDrugButton);
    deleteSelectedDrugButton.setTag(position);


    //Listener for the delete button. Deletes item from list.

    deleteSelectedDrugButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
             //re
             Integer index = (Integer) view.getTag();
             listArray.remove(index.intValue());
             notifyDataSetChanged();
        }
    });


    return V;
}


public void add(String input) {
    listArray.add(input);
    notifyDataSetChanged();
    Log.v(TAG, input + " added to list");
}

public void remove(String input){
    listArray.remove(input);
    notifyDataSetChanged();
    Log.v(TAG, input + " added to list");
    }


}

これが私のListViewが私のonCreate()メソッドでどのように初期化されるかです。

selectionListView = (ListView) findViewById(R.id.selectionListView);
selectionAdapter = new CustomListAdapter(this,myListItems);
selectionListView.setAdapter(selectionAdapter);

他のコードフラグメントが必要な場合は、喜んで提供します。

グージーク

メインアクティビティによって実装され、アダプタに渡されるInterfeceを作成できます(コンストラクターなど)

public interface SomeInterface

    {
        public void foo();
    }

アダプタにSomeInterfaceオブジェクトを追加します

SomeInterfaceレスポンダー= null;

public CustomListAdapter(Context context, List <String> inputArray, SomeInterface responder) {                                                        
    super();
    this.context = context;
    this.listArray = (ArrayList<String>) inputArray;
    this.responder=responder;
}       

public void add(String input) {
    listArray.add(input);
    notifyDataSetChanged();
    Log.v(TAG, input + " added to list");
    responder.foo();
}

public void remove(String input){
    listArray.remove(input);
    notifyDataSetChanged();
    Log.v(TAG, input + " added to list");
    responder.foo();
    }

MainActivityにSomeInterfaceを実装します

public class MainActivity extends Activity implements SomeInterface
{

...
 public void foo()
{
//do whatever
}

private initializeAdapter()
{
CustomListAdapter adapter=new Adapter(this, someArray, this);
}
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Kotlinのフラグメントからアクティビティのイメージを変更する方法

分類Dev

リストビューボタンのインテントでアクティビティを変更する

分類Dev

Androidの親アクティビティからフラグメントのテキストビューを変更する方法

分類Dev

アダプターのitemclickメソッドからアクティビティのテキストビューを変更する方法

分類Dev

Androidで別のアクティビティのテキストビューとイメージビューを変更する方法

分類Dev

リストビューからメインアクティビティにデータを渡す

分類Dev

メインアクティビティから円を描くか、ビューを変更します

分類Dev

アクティビティの背景をその中のフラグメントから変更する方法

分類Dev

ライブラリモジュールのアクティビティからメインアプリケーションのアクティビティにインテントを送信する方法

分類Dev

別のアクティビティから戻った後にタブアクティビティのリストビューを更新する方法

分類Dev

リストビューからIDを取得し、他のアクティビティに送信する方法

分類Dev

2番目のアクティビティのボタンをクリックしながらスピナーを使用して、メインアクティビティの背景色を変更するにはどうすればよいですか?

分類Dev

Android:アクティビティからアクセスして別のアクティビティのプライベート変数を更新する方法

分類Dev

Android:アクティビティの背景色を変更する(メインビュー)

分類Dev

ビュークラス内のメインアクティビティからコンテキストを取得する必要があります

分類Dev

メニューからアクティビティを変更

分類Dev

アクティビティのタイトルをフラグメントから変更するとクラッシュする

分類Dev

リストビューアイテムから別のアクティビティに名前を渡す

分類Dev

メインアクティビティからフラグメントでリストビューアイテムをロードします

分類Dev

インテントを使用して他のアクティビティからデータを渡し、リストビューに表示する

分類Dev

Android-アクティビティに含まれるフラグメントからアクティビティビューを更新する方法

分類Dev

アクティビティから別のアクティビティのリストビューに値を渡し、これらの値を保存する

分類Dev

アクティビティラベル(アクションバーのタイトル)を別のアクティビティから変更しますか?

分類Dev

メインアクティビティのフラグメントからビューを正しく取得する方法

分類Dev

アクティビティを終了するときにテキストビューを変更した後、インスタンスの状態を保存する

分類Dev

アクティビティからフラグメントの変数の値を変更する

分類Dev

あるアクティビティから別のアクティビティのテキストビューにint値を渡す方法は?

分類Dev

Webビューのテキストからリンクを検出する

分類Dev

アクティビティメインでDialogFragment変更テキストを作成する方法は?

Related 関連記事

  1. 1

    Kotlinのフラグメントからアクティビティのイメージを変更する方法

  2. 2

    リストビューボタンのインテントでアクティビティを変更する

  3. 3

    Androidの親アクティビティからフラグメントのテキストビューを変更する方法

  4. 4

    アダプターのitemclickメソッドからアクティビティのテキストビューを変更する方法

  5. 5

    Androidで別のアクティビティのテキストビューとイメージビューを変更する方法

  6. 6

    リストビューからメインアクティビティにデータを渡す

  7. 7

    メインアクティビティから円を描くか、ビューを変更します

  8. 8

    アクティビティの背景をその中のフラグメントから変更する方法

  9. 9

    ライブラリモジュールのアクティビティからメインアプリケーションのアクティビティにインテントを送信する方法

  10. 10

    別のアクティビティから戻った後にタブアクティビティのリストビューを更新する方法

  11. 11

    リストビューからIDを取得し、他のアクティビティに送信する方法

  12. 12

    2番目のアクティビティのボタンをクリックしながらスピナーを使用して、メインアクティビティの背景色を変更するにはどうすればよいですか?

  13. 13

    Android:アクティビティからアクセスして別のアクティビティのプライベート変数を更新する方法

  14. 14

    Android:アクティビティの背景色を変更する(メインビュー)

  15. 15

    ビュークラス内のメインアクティビティからコンテキストを取得する必要があります

  16. 16

    メニューからアクティビティを変更

  17. 17

    アクティビティのタイトルをフラグメントから変更するとクラッシュする

  18. 18

    リストビューアイテムから別のアクティビティに名前を渡す

  19. 19

    メインアクティビティからフラグメントでリストビューアイテムをロードします

  20. 20

    インテントを使用して他のアクティビティからデータを渡し、リストビューに表示する

  21. 21

    Android-アクティビティに含まれるフラグメントからアクティビティビューを更新する方法

  22. 22

    アクティビティから別のアクティビティのリストビューに値を渡し、これらの値を保存する

  23. 23

    アクティビティラベル(アクションバーのタイトル)を別のアクティビティから変更しますか?

  24. 24

    メインアクティビティのフラグメントからビューを正しく取得する方法

  25. 25

    アクティビティを終了するときにテキストビューを変更した後、インスタンスの状態を保存する

  26. 26

    アクティビティからフラグメントの変数の値を変更する

  27. 27

    あるアクティビティから別のアクティビティのテキストビューにint値を渡す方法は?

  28. 28

    Webビューのテキストからリンクを検出する

  29. 29

    アクティビティメインでDialogFragment変更テキストを作成する方法は?

ホットタグ

アーカイブ