カスタムCursorAdapterにViewHolderパターンが正しく実装されていますか?

モヒトデシュパンデ:

これが私のカスタムCursorAdapterです。

public class TasksAdapter extends CursorAdapter implements Filterable {

    private final Context context;

    public TasksAdapter(Context context, Cursor c) {
        super(context, c);
        this.context = context;
    }

    /**
     * @see android.widget.CursorAdapter#newView(android.content.Context, android.database.Cursor, android.view.ViewGroup)
     */
    @Override
    public View newView(Context context, Cursor cursor, ViewGroup parent) {
        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(android.R.layout.simple_list_item_checked, parent, false);        

        ViewHolder holder = new ViewHolder();
        holder.textview = (CheckedTextView)v.findViewById(android.R.id.text1);
        v.setTag(holder);

        return v;
    }

    /**  
     * @see android.widget.CursorAdapter#bindView(android.view.View, android.content.Context, android.database.Cursor)
     */
    @Override
    public void bindView(View view, Context context, Cursor cursor) {

        ViewHolder holder = (ViewHolder)view.getTag();
        int titleCol = cursor.getColumnIndexOrThrow(Tasks.TITLE);
        int completedCol = cursor.getColumnIndexOrThrow(Tasks.COMPLETED);

        String title = cursor.getString(titleCol);
        boolean completed = Util.intToBool(cursor.getInt(completedCol));

        holder.textview.setText(title);
        holder.textview.setChecked(completed);
    }

    /**
     * @see android.widget.CursorAdapter#runQueryOnBackgroundThread(java.lang.CharSequence)
     */
    @Override
    public Cursor runQueryOnBackgroundThread(CharSequence constraint) {

        StringBuffer buffer = null;
        String[] args = null;

        if (constraint != null) {
            buffer = new StringBuffer();
            buffer.append("UPPER (");
            buffer.append(Tasks.TITLE);
            buffer.append(") GLOB ?");
            args = new String[] { "*" + constraint.toString().toUpperCase() + "*" };
        }

        Cursor c = context.getContentResolver().query(Tasks.CONTENT_URI,
            null, (buffer == null ? null : buffer.toString()), args,
            Tasks.DEFAULT_SORT_ORDER);

        c.moveToFirst();
        return c;
    }

    /**
     * @see android.widget.CursorAdapter#convertToString(android.database.Cursor)
     */
    @Override
    public CharSequence convertToString(Cursor cursor) {
        final int titleCol = cursor.getColumnIndexOrThrow(Tasks.TITLE);
        String title = cursor.getString(titleCol);
        return title;
    }

    static class ViewHolder {
        CheckedTextView textview;
    }

}

これはViewHolderパターンの制約に該当しますか?これはCursorAdapterだったので、確信が持てませんでしたgetView問題や提案がある場合は、指摘してください。

クリスティアン:

CursorAdapternewView新しい行が必要になるたびにを呼び出すことはありません既にがあるView場合はを呼び出すbindViewため、作成されたビューは実際に再利用されます。

とは言っても、Josephのコメントで指摘されているように、findViewById繰り返し呼び出すことを避けるために、ViewHolderを引き続き使用できます

それでも効率が気になる場合SimpleCursorAdapterは、WeakHashMap(のマップWeakReferencesを使用する実装を見てください

WeakHashMap<View, View[]> mHolders = new WeakHashMap<View, View[]>();

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonのイテレーターアンパック(スターアンパック)はどのように実装されていますか(または、カスタムイテレーターのアンパックにはどのような魔法のメソッドが関係していますか?)

分類Dev

Pythonのイテレータアンパック(スターアンパック)はどのように実装されていますか(または、カスタムイテレータのアンパックにはどのような魔法のメソッドが関係していますか?)

分類Dev

パラメータバインディングはpymssqlライブラリに正しく実装されていますか?

分類Dev

カスタムstrcpyは正常にコンパイルされていますが、正しく機能していません

分類Dev

カスタムexcludehookが正しくインストールされていることをテストするにはどうすればよいですか?

分類Dev

SwiftUI MVVMパターンが正しく適用されていますか?

分類Dev

カスタムレールコントローラーメソッドを正しく実装するのに苦労しています

分類Dev

カスタムパイプが正しくインポートされない

分類Dev

これはアダプタデザインパターンが正しく実装されていますか?そうでない場合、私は何が欠けていますか?

分類Dev

カスタムコンパレータが提供されている場合、または要素がComparableを実装している場合は、メソッドのロジックを分割しますか?

分類Dev

(NGINX + Skaffold)-ローカルマシンでマイクロサービスシステムを実行すると、正しくコンパイルされていても、常に404が生成されますか?

分類Dev

データベース クエリは MVP パターンのどこに実装されていますか?

分類Dev

インスタンスがサーバーから実行されているときにWinformTopMostプロパティが正しく機能しない

分類Dev

インターフェース機能の実装 - インターフェースが正しく実装されていないと主張

分類Dev

tensorflowのカスタムデータセットにnext_batchを正しく実装するにはどうすればよいですか?

分類Dev

Tableviewcellにはカスタムビューがあり、アプリの実行中にサイズが正しく設定されていません(下の写真)

分類Dev

Reflection.Emitアセンブリにカスタム属性が正しく追加されていません

分類Dev

カスタムAuthorizeAttributeが実装されていません

分類Dev

Swift 3-カスタムボタン(画像とテキスト)は、コンセントがない場合にのみ正しく描画されますか?

分類Dev

PermissionError:[Errno 13]パーミッションが拒否されました:AWS EC2インスタンスで正しく実行されているにもかかわらず、ブラウザーでJupyterを開くことができません

分類Dev

SQLiteDBからのデータとseachviewウィンドウを含む3列のリストビューがあります。カスタムデータを作成しました。検索が正しく実行されない

分類Dev

SprocketsエラーSprockets :: NotImplementedError:カスタムasset_pathヘルパーが実装されていません

分類Dev

Linuxカーネルが実装されているttyは常にUTF-8を使用してデータをレンダリングしますか?

分類Dev

Arangoimp は、すべてが正しく実行されたと述べていますが、データベースにデータが表示されません。

分類Dev

Lucene / Solrでカスタムトークナイザーを正しく実装するにはどうすればよいですか?

分類Dev

カスタムCursorAdapterにアイテムが表示されない

分類Dev

カスタムヘルパーが正しく機能していません

分類Dev

タグが正しく実装されていない問題

分類Dev

ボタンのカスタム背景が正しく設定されていません

Related 関連記事

  1. 1

    Pythonのイテレーターアンパック(スターアンパック)はどのように実装されていますか(または、カスタムイテレーターのアンパックにはどのような魔法のメソッドが関係していますか?)

  2. 2

    Pythonのイテレータアンパック(スターアンパック)はどのように実装されていますか(または、カスタムイテレータのアンパックにはどのような魔法のメソッドが関係していますか?)

  3. 3

    パラメータバインディングはpymssqlライブラリに正しく実装されていますか?

  4. 4

    カスタムstrcpyは正常にコンパイルされていますが、正しく機能していません

  5. 5

    カスタムexcludehookが正しくインストールされていることをテストするにはどうすればよいですか?

  6. 6

    SwiftUI MVVMパターンが正しく適用されていますか?

  7. 7

    カスタムレールコントローラーメソッドを正しく実装するのに苦労しています

  8. 8

    カスタムパイプが正しくインポートされない

  9. 9

    これはアダプタデザインパターンが正しく実装されていますか?そうでない場合、私は何が欠けていますか?

  10. 10

    カスタムコンパレータが提供されている場合、または要素がComparableを実装している場合は、メソッドのロジックを分割しますか?

  11. 11

    (NGINX + Skaffold)-ローカルマシンでマイクロサービスシステムを実行すると、正しくコンパイルされていても、常に404が生成されますか?

  12. 12

    データベース クエリは MVP パターンのどこに実装されていますか?

  13. 13

    インスタンスがサーバーから実行されているときにWinformTopMostプロパティが正しく機能しない

  14. 14

    インターフェース機能の実装 - インターフェースが正しく実装されていないと主張

  15. 15

    tensorflowのカスタムデータセットにnext_batchを正しく実装するにはどうすればよいですか?

  16. 16

    Tableviewcellにはカスタムビューがあり、アプリの実行中にサイズが正しく設定されていません(下の写真)

  17. 17

    Reflection.Emitアセンブリにカスタム属性が正しく追加されていません

  18. 18

    カスタムAuthorizeAttributeが実装されていません

  19. 19

    Swift 3-カスタムボタン(画像とテキスト)は、コンセントがない場合にのみ正しく描画されますか?

  20. 20

    PermissionError:[Errno 13]パーミッションが拒否されました:AWS EC2インスタンスで正しく実行されているにもかかわらず、ブラウザーでJupyterを開くことができません

  21. 21

    SQLiteDBからのデータとseachviewウィンドウを含む3列のリストビューがあります。カスタムデータを作成しました。検索が正しく実行されない

  22. 22

    SprocketsエラーSprockets :: NotImplementedError:カスタムasset_pathヘルパーが実装されていません

  23. 23

    Linuxカーネルが実装されているttyは常にUTF-8を使用してデータをレンダリングしますか?

  24. 24

    Arangoimp は、すべてが正しく実行されたと述べていますが、データベースにデータが表示されません。

  25. 25

    Lucene / Solrでカスタムトークナイザーを正しく実装するにはどうすればよいですか?

  26. 26

    カスタムCursorAdapterにアイテムが表示されない

  27. 27

    カスタムヘルパーが正しく機能していません

  28. 28

    タグが正しく実装されていない問題

  29. 29

    ボタンのカスタム背景が正しく設定されていません

ホットタグ

アーカイブ