ListView의 어댑터에서 ImageView를 분리하는 방법

Guixe94

모든 단일 항목의 제목 (TextView)과 이미지 (ImageView)를 변경하는 목록보기 및 어댑터가 있습니다. 하지만 문제가 있습니다. 또한 TextChangedListener 함수를 사용하여 검색 (edittext)을 입력하여 목록보기의 단일 항목을 검색합니다. 그러나 실제로 이것은 TextChangedListener의 mi 코드입니다.

 /**
     * Enabling Search Filter
     * */
    inputSearch.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            // When user changed the Text
            Alimentacion.this.adapter.getFilter().filter(cs);
                        }
        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                      int arg3) {
            // TODO Auto-generated method stub
        }

        @Override
        public void afterTextChanged(Editable arg0) {
            // TODO Auto-generated method stub
        }
    });

이것은 다음 행에서 널 포인터를 일반화합니다. Alimentacion.this.adapter.getFilter (). filter (cs); null 포인터는 검색 할 때 제목으로 만 검색하고 싶지만 어댑터에는 제목과 이미지가 있으므로 제목과 이미지 를 검색하고 null 포인터를 되돌리려 고하기 때문에 null 포인터라고 생각합니다. 나는 생각한다. 제목 만 검색하기 위해 이러한 것을 어떻게 분리 할 수 ​​있습니까? 내 전체 코드 : ** Myfragment.xml의 OncreateView ** (목록보기가 조각에 있음)

// List view
    private ListView lv;

    // Listview Adapter
    ArrayAdapter<String> adapter;
    ArrayAdapter<String> adapter2;

    // Search EditText
    EditText inputSearch;

 // Set the Text to try this out
        lv = (ListView)myInflatedView.findViewById(R.id.list_view);
        inputSearch = (EditText) myInflatedView.findViewById(R.id.inputSearch);

// Listview Data
        final String categorias[] = {"1. Huevos y Lacteos", "2. Carnes y Derivados", "3. Pescados y Mariscos", "4. Aceites y grasos", "5. Verduras y hortalizas",
                "6. Frutas", "7. Bebidas",
                "8. Comida Rapida", "9. Pasta y Cereales", "10. Bolleria y Snacks"};
        Integer ImgCategorias[] = {R.drawable.cat1,R.drawable.cat2,R.drawable.cat3,R.drawable.cat4,R.drawable.cat5,R.drawable.cat6
                ,R.drawable.cat7,R.drawable.cat8,R.drawable.cat9,R.drawable.cat10};

        // Pass results to ListViewAdapter Class
        CustomList adapter = new
                CustomList(this.getActivity(), categorias, ImgCategorias);



        // Binds the Adapter to the ListView
        lv.setAdapter(adapter);

        // OLD ADAPTER (where only change the text, it works to the TextChangeListener)
     /*   adapter2 = new ArrayAdapter<String>(this.getActivity(), R.layout.adapter_categorias, R.id.TVTitulo, categorias);
        lv.setAdapter(adapter2); */


        /**
         * Enabling Search Filter
         * */
        inputSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text (LINE OF THE NULLPOINTER)
                Alimentacion.this.adapter.getFilter().filter(cs);
                            }
            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                          int arg3) {
                // TODO Auto-generated method stub
            }

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub
            }
        });

그리고 CustomList.java

    public class CustomList extends ArrayAdapter<String>{
    private final Activity context;
    private final String[] categorias;
    private final Integer[] ImgCategorias;
    public CustomList(Activity context,
                      String[] categorias, Integer[] ImgCategorias) {
        super(context, R.layout.adapter_categorias, categorias);
        this.context = context;
        this.categorias = categorias;
        this.ImgCategorias = ImgCategorias;
    }
    @Override
    public View getView(int position, View view, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView= inflater.inflate(R.layout.adapter_categorias, null, true);
        TextView txtTitle = (TextView) rowView.findViewById(R.id.TVTitulo);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.IVCategoria);
        txtTitle.setText(categorias[position]);
        imageView.setImageResource(ImgCategorias[position]);
        return rowView;
    }
}

결론적으로 나는 이미지와 제목을 다른 어댑터에 넣고 검색 기능에 제목의 어댑터 만 넣으면 좋겠다. 또는 오류없이 제목을 검색 할 수있는 것 ..이 질문을 본 적이 있습니다. 하나의 어댑터에 여러 어댑터를 연결하는 android 하지만 내 앱에 구현하는 방법을 잘 이해하지 못합니다 ..

감사.

sUndeep

다음과 같이 코드를 수정했으며 이제 정상적으로 작동합니다. 확인하고 알려주십시오.

public class Image {

    String categorias;
    Integer ImgCategorias;

    public String getCategorias() {
        return categorias;
    }
    public void setCategorias(String categorias) {
        this.categorias = categorias;
    }
    public Integer getImgCategorias() {
        return ImgCategorias;
    }
    public void setImgCategorias(Integer imgCategorias) {
        ImgCategorias = imgCategorias;
    }
}

어댑터 클래스 :

import java.util.ArrayList;
import java.util.Locale;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomList extends BaseAdapter {
    private Context context;
    private ArrayList<Image> data;
    private  ArrayList<Image> listImage;

    public CustomList(Context context, ArrayList<Image> listImage) {
        this.context = context;
        data = listImage;
        this.listImage = new ArrayList<Image>();
        this.listImage.addAll(listImage);
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        View rowView = inflater
                .inflate(R.layout.adapter_categorias, null, true);
        TextView txtTitle = (TextView) rowView.findViewById(R.id.TVTitulo);
        ImageView imageView = (ImageView) rowView
                .findViewById(R.id.IVCategoria);
        txtTitle.setText(data.get(position).getCategorias());
        imageView.setImageResource(data.get(position).getImgCategorias());
        return rowView;
    }

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

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

    @Override
    public long getItemId(int position) {
        return position;
    }

    @SuppressLint("DefaultLocale")
    public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        data.clear();
        if (charText.trim().length() == 0) {
            data.addAll(listImage);
        } else {
            for (Image wp : listImage) {
                if (wp.getCategorias().toLowerCase().contains(charText)) {
                    data.add(wp);
                }
            }
        }
        notifyDataSetChanged();
    }
}

활동 클래스 :

import java.util.ArrayList;
import java.util.Locale;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;

public class Alimentacion extends Activity {

    Context context;
    TextView txtTVtexto;
    EditText txtInputSearch;
    ListView list;
    CustomList adapter;


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

        context = Alimentacion.this;

        txtTVtexto = (TextView) findViewById(R.id.TVtexto);
        txtInputSearch = (EditText) findViewById(R.id.inputSearch);
        list = (ListView) findViewById(R.id.list_view);

        ArrayList<Image> listImage = prepareImageList();
        adapter = new CustomList(context, listImage);


        list.setAdapter(adapter);
    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int pos,
                long id) {
            Image image = (Image) list.getItemAtPosition(pos);
            Toast.makeText(context, "Name: "+image.getCategorias(), Toast.LENGTH_LONG).show();
        }
    });         

        txtInputSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {

            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                          int arg3) {
                // TODO Auto-generated method stub
            }

            @Override
            public void afterTextChanged(Editable arg0) {
                String text = "";
                try {
                    text = txtInputSearch.getText().toString().toLowerCase(Locale.getDefault());
                } catch ( Exception e ) {
                    e.printStackTrace();
                }
                adapter.filter(text);
            }
        });
    }

    private ArrayList<Image> prepareImageList() {
        ArrayList<Image> listImage = new ArrayList<Image>();
        Image image = new Image();
        image.setCategorias("1. Huevos y Lacteos");
        image.setImgCategorias(R.drawable.ic_launcher);
        listImage.add(image);

        image = new Image();
        image.setCategorias("2. Carnes y Derivados");
        image.setImgCategorias(R.drawable.ic_launcher);
        listImage.add(image);

        image = new Image();
        image.setCategorias("3. Pescados y Mariscos");
        image.setImgCategorias(R.drawable.ic_launcher);
        listImage.add(image);

        image = new Image();
        image.setCategorias("4. Aceites y grasos");
        image.setImgCategorias(R.drawable.ic_stub);
        listImage.add(image);

        image = new Image();
        image.setCategorias("5. Verduras y hortalizas");
        image.setImgCategorias(R.drawable.share);
        listImage.add(image);

        image = new Image();
        image.setCategorias("6. Frutas");
        image.setImgCategorias(R.drawable.ic_launcher);
        listImage.add(image);

        image = new Image();
        image.setCategorias("7. Bebidas");
        image.setImgCategorias(R.drawable.ic_launcher);
        listImage.add(image);

        image = new Image();
        image.setCategorias("8. Comida Rapida");
        image.setImgCategorias(R.drawable.ic_launcher);
        listImage.add(image);

        image = new Image();
        image.setCategorias("9. Pasta y Cereales");
        image.setImgCategorias(R.drawable.ic_launcher);
        listImage.add(image);

        image = new Image();
        image.setCategorias("10. Bolleria y Snacks");
        image.setImgCategorias(R.drawable.ic_launcher);
        listImage.add(image);

        return listImage;
    }
}
  • 형세:

fragment_alimentacion.xml :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="es.bawi.testdeporte.Alimentacion" >

    <!-- TODO: Update blank fragment layout -->

    <TextView
        android:id="@+id/TVtexto"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:gravity="center_horizontal|center_vertical"
        android:text="Blank Fragment" />
    <!-- Editext for Search -->

    <EditText
        android:id="@+id/inputSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/TVtexto"
        android:hint="Productos"
        android:inputType="textVisiblePassword" />
    <!-- List View -->

    <ListView
        android:id="@+id/list_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/inputSearch" />

</RelativeLayout>

adapter_categorias.xml :

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/holo_blue_light"
    android:paddingBottom="2dp" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:background="@android:color/holo_green_light"
        android:layout_height="70dp">

    <ImageView
        android:id="@+id/IVCategoria"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerVertical="true"
        android:src="@drawable/ic_launcher"
        android:focusable="false" />

    <TextView
        android:id="@+id/TVTitulo"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@id/IVCategoria"
        android:text="Categoria"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/TVCalorias"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_below="@+id/TVTitulo"
        android:paddingTop="0dp"
        android:text="Nº Productos"
        android:textAppearance="?android:attr/textAppearanceSmall" />



</RelativeLayout>
    </LinearLayout>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

android kotlin의 recyclerview 어댑터에서 arraylist를 얻는 방법

분류에서Dev

사용자 지정 어댑터를 사용할 때 Android의 ListView에서 데이터를 가져 오는 방법

분류에서Dev

단일 어댑터에서 두 개의 Viewholder를 사용하는 방법

분류에서Dev

데이터베이스 커서 어댑터가 지원하는 Android ListView의 레이아웃 내에서 하나의보기를 숨기는 방법

분류에서Dev

활동에서 ListView 어댑터의 getItem (i)을 호출하는 방법

분류에서Dev

다른 어댑터에서 작업 등 어댑터를 호출하는 방법

분류에서Dev

사용자 지정 기본 어댑터를 사용하여 listView에서 항목을 삭제하는 방법

분류에서Dev

최신 버전의 불씨 데이터에서 어댑터를 구성하는 방법은 무엇입니까?

분류에서Dev

피드와 같은 FaceBook 용 ListView 어댑터의 UI를 생성하는 방법

분류에서Dev

MobileFirst Platform 7.0의 JS 어댑터 프로 시저에서 Java 어댑터 프로 시저를 호출하는 방법은 무엇입니까?

분류에서Dev

MobileFirst 7.0에서 SOAP 어댑터를 디버그하는 방법

분류에서Dev

RecyclerView 어댑터 (DataBinding)에서 startActivity를 호출하는 방법

분류에서Dev

Android에서 사용자 정의 어댑터를 사용하여 여러 값을 확인하는 방법

분류에서Dev

ImageView에서 ImageView를 그리는 방법?

분류에서Dev

사용자 정의 어댑터에서 체크 박스를 추적하는 방법은 무엇입니까?

분류에서Dev

활동에서 어댑터의 텍스트보기를 업데이트하는 방법

분류에서Dev

kotlin의 어댑터에서 활동을 여는 방법

분류에서Dev

Xamarin.Android에서 DataTable을 ListView 어댑터로 변환하는 방법

분류에서Dev

어댑터 Kotlin에서 알림 배지 카운터를 늘리는 방법

분류에서Dev

어댑터 Kotlin에서 알림 배지 카운터를 늘리는 방법

분류에서Dev

어떻게 안드로이드 3.1 이상의 최신 버전에서 중포 기지 리사이클 어댑터를 구현하는 방법?

분류에서Dev

어댑터에서 사용되는 ImageView의 기본 이미지

분류에서Dev

WEC2013에서 어댑터의 넷 마스크 및 기본 게이트웨이를 얻는 방법

분류에서Dev

어댑터의 OnClickListener에 startActivity를 추가하는 방법은 무엇입니까?

분류에서Dev

단일 목록보기에 두 개의 어댑터를 추가하는 방법

분류에서Dev

Android의 어댑터 클래스에 팝 메뉴를 표시하는 방법

분류에서Dev

Android 어댑터에서 Json 데이터를 전달하는 방법

분류에서Dev

하나의 리사이클 러 뷰 어댑터에만 다른 OnClickListener를 설정하는 방법

분류에서Dev

패킷이 방화벽에서 tun + 어댑터를 통과하는 방법

Related 관련 기사

  1. 1

    android kotlin의 recyclerview 어댑터에서 arraylist를 얻는 방법

  2. 2

    사용자 지정 어댑터를 사용할 때 Android의 ListView에서 데이터를 가져 오는 방법

  3. 3

    단일 어댑터에서 두 개의 Viewholder를 사용하는 방법

  4. 4

    데이터베이스 커서 어댑터가 지원하는 Android ListView의 레이아웃 내에서 하나의보기를 숨기는 방법

  5. 5

    활동에서 ListView 어댑터의 getItem (i)을 호출하는 방법

  6. 6

    다른 어댑터에서 작업 등 어댑터를 호출하는 방법

  7. 7

    사용자 지정 기본 어댑터를 사용하여 listView에서 항목을 삭제하는 방법

  8. 8

    최신 버전의 불씨 데이터에서 어댑터를 구성하는 방법은 무엇입니까?

  9. 9

    피드와 같은 FaceBook 용 ListView 어댑터의 UI를 생성하는 방법

  10. 10

    MobileFirst Platform 7.0의 JS 어댑터 프로 시저에서 Java 어댑터 프로 시저를 호출하는 방법은 무엇입니까?

  11. 11

    MobileFirst 7.0에서 SOAP 어댑터를 디버그하는 방법

  12. 12

    RecyclerView 어댑터 (DataBinding)에서 startActivity를 호출하는 방법

  13. 13

    Android에서 사용자 정의 어댑터를 사용하여 여러 값을 확인하는 방법

  14. 14

    ImageView에서 ImageView를 그리는 방법?

  15. 15

    사용자 정의 어댑터에서 체크 박스를 추적하는 방법은 무엇입니까?

  16. 16

    활동에서 어댑터의 텍스트보기를 업데이트하는 방법

  17. 17

    kotlin의 어댑터에서 활동을 여는 방법

  18. 18

    Xamarin.Android에서 DataTable을 ListView 어댑터로 변환하는 방법

  19. 19

    어댑터 Kotlin에서 알림 배지 카운터를 늘리는 방법

  20. 20

    어댑터 Kotlin에서 알림 배지 카운터를 늘리는 방법

  21. 21

    어떻게 안드로이드 3.1 이상의 최신 버전에서 중포 기지 리사이클 어댑터를 구현하는 방법?

  22. 22

    어댑터에서 사용되는 ImageView의 기본 이미지

  23. 23

    WEC2013에서 어댑터의 넷 마스크 및 기본 게이트웨이를 얻는 방법

  24. 24

    어댑터의 OnClickListener에 startActivity를 추가하는 방법은 무엇입니까?

  25. 25

    단일 목록보기에 두 개의 어댑터를 추가하는 방법

  26. 26

    Android의 어댑터 클래스에 팝 메뉴를 표시하는 방법

  27. 27

    Android 어댑터에서 Json 데이터를 전달하는 방법

  28. 28

    하나의 리사이클 러 뷰 어댑터에만 다른 OnClickListener를 설정하는 방법

  29. 29

    패킷이 방화벽에서 tun + 어댑터를 통과하는 방법

뜨겁다태그

보관