2017-03-21 1 views
0

私はリストビューのために私のCustomAdapterに多すぎるコードがあると思います。 CustomAdapterに複数のonclicks、db編集、およびポップアップウィンドウコードがあるのは普通ですか?リストビューのcustomadapterにあまりにも多くのコードを入れていますか?

私は、リストビューを格納するアクティビティクラスにコードを移動する方法を検討しましたが、不可能または非常に複雑です。私は本当にたくさんの経験を持っていないので、より技術的なコーディング方法のいくつかに従うのは難しいです。

+0

コードを見ずに答えるのは難しいです... –

+0

はよく書かれたコードではないようですが、行がありません... – snachmsm

+0

それは唯一の機能のときにあなたが多くのビジネスロジックをアダプタに入れているようですデータを表すビューを返します。私の意見では、はい、あなたはそれにあまりにも多くを入れています。懸念の練習をする。 – DeeV

答えて

0

私はリストビューを収容するアクティビティクラスにコードを移動する方法に見てきたが、それはそれは複雑になる唯一の理由は、あなたがやっていることである

不可能か、非常に複雑どちらかですアダプター内であまりにも多くの。

アクティビティにコードを移動したいなかった場合、方法は、あなたは、アダプタを持っているいくつかの特定のItemクラスで、例えばインターフェース

を使用することです。

// ... BaseAdapter, ArrayAdapter, RecyclerView.Adapter... Same difference 
public class YourAdapter extends BaseAdapter { 

    public interface OnItemActionListener { 
     void onItemEdited(Item x); 
     void onItemAdded(Item x); 
     void onItemClicked(Item x); 
     // etc. 
    } 

    public OnItemActionListener listener; // should make private with a setter method 

    ... 

     // somewhere in the adapter 
     Item x = getItem(position); 

     if (listener != null) { 
      listener.onItemClicked(item); 
     } 

    ... 

} 

あなたのアクティビティはそのインターフェイスを実装できます。

public YourActivity extends Activity 
    implements YourAdapter.OnItemActionListener { 

    @Override 
    public void onItemClicked(Item x) { 
     Log.d("item click", String.valueOf(x)); 
    } 

    @Override 
    public void onItemAdded(Item x) { 
     Log.d("item added", String.valueOf(x)); 
    } 

    @Override 
    protected void onCreate(Bundle b){ 
     super.onCreate(b); 
     setContentView... ; 

     adapter = new YourAdapter... ; 
     adapter.listener = this; // Should use a setter method instead 
    } 

} 

この

については、複数のonclicks

を持っているあなたが唯一onClick(View v)のための一つのインタフェースを必要とし、あなたが何を参照するために、任意のR.id値に対してv.getId()を確認することができます正常ですがクリックされています。

+0

はYourActivityです:1.リストビューとリストビューアダプターを含むアクティビティ、または2.オンクリックを処理するための異なるアクティビティ2.ボタンが編集トランザクションページにつながる場合に保存するために切り替えたいアクティビティ。 –

+0

それは、それがアダプタが含まれているので、それはリストビューを持つものであることを意図しました –

関連する問題