2015-01-16 6 views
0

TextViewImageView이 포함 된 listview이 있습니다. 여기검색시 새로 고침시 목록보기가 변경됩니다.

그것이 : 프레스 예

imageView가 변경되면 ImageView 변경

enter image description here

OnClick 예 버튼 함께 alertdialog 열리고 제

enter image description here

파란색의 배경,

눌러 아니,

imageView 배경이 빨간색으로 변경하는 경우.

enter image description here

는 지금까지 그것을 잘 노력하고 있습니다.

나는 listview에있는 textview을 기반으로 검색하는에 기반하여 검색하는 edittext 위의 검색을 가지고 있습니다.

이제 검색시 imageview에 기본 배경 만 변경된 배경이 표시됩니다. 이 참조 : 나는 imageview를 만들기 위해 무엇을해야

enter image description here

은 경고 대화 상자에서 선택한 이미지를 보여줍니다. 리스트 뷰 항목 레이아웃을 재-사용하기 때문에

코드

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    if (v == null) { 
    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    v = vi.inflate(R.layout.custom_lay, null); 
    }else{ 
    v=convertView; 
    } 
    holder = new ViewHolder(); 
    holder.code = (TextView) v.findViewById(R.id.DealerName); 
    holder.btnName = (ImageView) v.findViewById(R.id.BtnStreet); 
    holder.btnName.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(final View vi) { 
    // TODO Auto-generated method stub 
    AlertDialog.Builder builder = new AlertDialog.Builder(context); 
    builder.setMessage("select any one?"); 
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 



//  holder.btnName.setBackgroundResource(R.drawable.green_icon); 
    vi.setBackgroundResource(R.drawable.blue_icon); 
//  notifyDataSetChanged(); 
    } 
    }); 
    builder.setNegativeButton("No", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 

     holder.btnName.setImageResource(R.drawable.blue_icon); 
     //vi.setBackgroundResource(R.drawable.green_icon); 
//  notifyDataSetChanged(); 
    } 
    }); 
    AlertDialog dialog = builder.create(); 
    dialog.show(); 
    } 
    }); 
    v.setTag(holder); 
    ViewHolder hold = (ViewHolder) v.getTag(); 
    String lb = DisplayedValues.get(position); 
    hold.code.setText(getItem(position)); 
// hold.btnName.setBackgroundResource(getSelectedItemPosition()); 

    return v; 
} 
+0

모델 클래스를 유지해야 어떤 버튼을 눌렀는지 알 수 있습니다. 그렇지 않으면, 목록보기는 스크롤시에도 눌려진 것을 잊어 버릴 것입니다. 이 ansewr를 참조하십시오 : http://stackoverflow.com/a/27014443/2389078 – DroidDev

+0

검색 코드 –

+0

을 추가하고 배경 변경 사항을 전역 적으로 저장하고 검색 기준에 따라 목록보기를 채우는 동안 사용하십시오 –

답변

0

발생합니다. 한 번에 화면에 표시되는만큼 팽창됩니다. 그렇게하면 메모리가 절약됩니다.

모든 ListView 항목 ImageView의 상태를 저장해야합니다. 예 : boolean[]

배경색 (상태 배열을 기반으로 함)은 어댑터의 getView 방법으로 설정해야합니다.

OnClickListener에서 전환 의 ImageView 백그라운드 상태 저장이 이루어져야합니다.

관련 문제