2012-05-10 2 views
0

나는 내 자신의 사용자 지정 ListView 어댑터를 만들었으므로 어떤 항목을 필터링하려고 시도했는데 어떻게 할 수 있는지 설명했습니다. 표준 어댑터에서 쉽게 그래서 난이 tryied하지만이 작동하지 않습니다이미지가있는 필터 목록보기

import android.app.ListActivity; 
import android.content.Context; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class lista_imagini extends ListActivity{ 

    String[] items={"lorem", "ipsum", "dolor", "sit", "amet", 
      "consectetuer", "adipiscing", "elit", "morbi", "vel", 
      "ligula", "vitae", "arcu", "aliquet", "mollis", 
      "etiam", "vel", "erat", "placerat", "ante", 
      "porttitor", "sodales", "pellentesque", "augue", 
      "purus"}; 

    ImageAndTextAdapter adaptor = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.clist); 

     final ListView ls = getListView(); 
     if (ls == null) Log.d("DHA", "Cacat"); 
     ls.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       Toast.makeText(getApplicationContext(), ls.getItemAtPosition(arg2).toString(), Toast.LENGTH_LONG).show(); 

      } 

     }); 

     adaptor = new ImageAndTextAdapter(getApplicationContext(),R.layout.customlist,items); 
     setListAdapter(adaptor); 


    } 

    public class ImageAndTextAdapter extends ArrayAdapter<String> { 

     private LayoutInflater mInflater; 

     private String[] mStrings; 

     private int mViewResourceId; 

     public ImageAndTextAdapter(Context ctx, int viewResourceId, 
       String[] strings) { 
      super(ctx, viewResourceId, strings); 

      mInflater = (LayoutInflater)ctx.getSystemService(
        Context.LAYOUT_INFLATER_SERVICE); 

      mStrings = strings; 

      mViewResourceId = viewResourceId; 
     } 

     @Override 
     public int getCount() { 
      return mStrings.length; 
     } 

     @Override 
     public String getItem(int position) { 
      return mStrings[position]; 
     } 

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

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      convertView = mInflater.inflate(mViewResourceId, null); 

      ImageView iv = (ImageView)convertView.findViewById(R.id.icon2); 
      iv.setImageResource(R.drawable.fail); 

      TextView tv = (TextView)convertView.findViewById(R.id.label2); 
      tv.setText(mStrings[position]); 

      return convertView; 
     } 
    } 

    public void testnow(View V) 
    { 
     items[3] = "Heeee"; 
     adaptor.getFilter().filter("ipsum"); 
     adaptor.notifyDataSetChanged(); 
     getListView().refreshDrawableState(); 

    } 

} 
+0

예 어떤 일이 발생하지 않습니다 – opc0de

+0

testnow (보기 v) 어디에서 함수 호출이 발생합니까? –

+0

버튼에 xml 파일로 설정되어 있습니다.) – opc0de

답변