2014-03-03 2 views
0

"결과를 찾을 수 없음"을 표시하려면 어떻게해야합니까? 여기 "결과 없음"표시 방법 - 안드로이드

final BinderActorData bindingData = new BinderActorData(this, 
       actorDataCollection); 
list = (ListView) findViewById(R.id.list); 
// Adding items to listview 
inputSearch = (EditText) findViewById(R.id.inputSearch); 

list.setAdapter(bindingData); 

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

@Override 
public void onTextChanged(CharSequence cs, int arg1, int arg2, 
     int arg3) { 
    // When user changed the Text 
    bindingData.getFilter().filter(cs); 
    list.setAdapter(bindingData); 
} 

는 다음의 onclick 나는 다음과 같은 코드를 사용하고 있습니다 .. 코드입니다 :

여기
// Click event for single list row 
list.setOnItemClickListener(new OnItemClickListener() { 
@Override 
public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 

Intent i = new Intent(); 
i.setClass(BrowseActors.this, ViewActor.class); 
int t = position; 
// parameters 
i.putExtra("position", String.valueOf(position + 1)); 

/* 
    * selected item parameters 
*/ 

    i.putExtra("name", 
       actorDataCollection.get(position).get(KEY_NAME)); 
    i.putExtra("icon", 
       actorDataCollection.get(position).get(KEY_ICON)); 
    i.putExtra("career", 
       actorDataCollection.get(position).get(KEY_CAREER)); 

     // start the sample activity 
     startActivity(i); 
    } 
}); 

actorDataCollection 내가 태그를 기반으로, 외부 XML에서 채우기하고있다.

public class BinderActorData extends BaseAdapter implements Filterable { 
static final String KEY_TAG = "ActorData"; // parent node 
static final String KEY_ID = "id"; 
static final String KEY_NAME = "name"; 
static final String KEY_ICON = "icon"; 
static final String KEY_CAREER = "career"; 

LayoutInflater inflater; 

private List<HashMap<String, String>> actorDataCollection; 
private List<HashMap<String, String>> filteredData; 
ViewHolder holder; 
private Context context; 

public BinderActorData(Context context) { 
    this.context = context; 
} 

public BinderActorData() { 
    // TODO Auto-generated constructor stub 
} 

public BinderActorData(Activity act, List<HashMap<String, String>> map) { 

    this.actorDataCollection = map; 
    this.filteredData = map; 
    inflater = (LayoutInflater) act 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return filteredData.size(); 
} 

@Override 
public Object getItem(int position) { 
    // TODO Auto-generated method stub 
    return filteredData.get(position); 
} 

@Override 
public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return position; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 

    View vi = convertView; 
    if (convertView == null) { 

     vi = inflater.inflate(R.layout.list_row, null); 
     holder = new ViewHolder(); 
     holder.name = (TextView) vi.findViewById(R.id.name); // type 
     holder.actorImage = (ImageView) vi.findViewById(R.id.list_image); // thumb 
                      // image 
     vi.setTag(holder); 
    } else { 

     holder = (ViewHolder) vi.getTag(); 
    } 


    // Get data from filtered Data 
    holder.name.setText(filteredData.get(position).get(KEY_NAME)); 
    // Setting Thumbnail image 
    String imageUri = filteredData.get(position).get(KEY_ICON); 

    AssetActivity a = new AssetActivity(); 
    context = vi.getContext(); 
    Drawable image = a.getImage(imageUri, context); 
    holder.actorImage.setImageDrawable(image); 

    return vi; 
} 

static class ViewHolder { 
    TextView name; 
    ImageView actorImage; 
} 

@Override 
public Filter getFilter() { 
    return new Filter() { 
     @SuppressLint("DefaultLocale") 
     @Override 
     protected FilterResults performFiltering(CharSequence charSequence) { 
      FilterResults results = new FilterResults(); 
      // If there's nothing to filter on, return the original data for 
      // your list 
      if (charSequence == null || charSequence.length() == 0) { 
       results.values = actorDataCollection; 
       results.count = actorDataCollection.size(); 
      } else { 
       List<HashMap<String, String>> filterResultsData = new  ArrayList<HashMap<String, String>>(); 

       for (int i = 0; i < actorDataCollection.size(); i++) { 
        if (actorDataCollection.get(i).get(KEY_NAME) 
          .toLowerCase().toString() 
          .indexOf(charSequence.toString().toLowerCase()) >= 0) { 
         filterResultsData.add(actorDataCollection.get(i)); 
        } 
       } 

       results.values = filterResultsData; 
       results.count = filterResultsData.size(); 
      } 
      return results; 
     } 

     @SuppressWarnings("unchecked") 
     @Override 
     protected void publishResults(CharSequence charSequence, 
       FilterResults filterResults) { 
      filteredData = (List<HashMap<String, String>>) filterResults.values; 
      notifyDataSetChanged(); 
     } 
    }; 
} 
} 
+0

주세요 최소한의 코드 예제와 전체 프로젝트가 아니며 컨텍스트에 대한 정보도 제공해야합니다. "결과 없음"과 원하는 이유는 무엇입니까? –

답변

1

ListViewsetEmptyView(View) 방법이 있습니다

List<HashMap<String, String>> actorDataCollection; 

이것은 내 사용자 지정 BaseAdapter입니다. 빈보기로 전달할 View을 얻기에 관하여가는 방법은 여러 가지가 있지만

, 나는 일반적으로 그렇게처럼 내 ListView를 포함하는 XML 레이아웃에 TextView을 넣어 설정 :

View emptyView = findViewById(R.id.my_empty_view); 
ListView listView = (ListView) findViewById(R.id.my_list_view); 
listView.setEmptyView(emptyView); 
+0

Toast.makeText()는 performFiltering() 메소드의 끝에서 호출 할 수있는 것처럼 보입니다. Toast를 보여주고 싶을 때를 가정합니다. 유일한 catch는 생성자 중 하나에서'Context' 참조를 저장하기 때문에 유효한'Context'를 가지고 있는지 확인해야한다는 것입니다. –

관련 문제