searchviewに問題があります。 たとえば、元のリストビューが次の場合: - Aa Ab Ac Ad。 しかし、検索バーで検索すると、たとえばbという検索結果が得られます。 しかし、アイテムをクリックすると、Position: - Aaの値が返されます。リストビューの検索はアイテムのクリックでは機能していません。戻り値元の商品の位置
はここに私のリストビューの活動である: - ここに
HashMap<String, String> userMap = Login.userMap;
final ArrayList<String> userList = new ArrayList(userMap.keySet());
listView = (ListView) findViewById(R.id.listView);
adapter = new ListAdapter(this, userMap);
listView.setAdapter(adapter);
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
user = userList.get(position);
new GetDetails().execute(new Void[0]);
}
});
searchView.setMenuItem(item);
searchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
public boolean onQueryTextSubmit(String query) {
return false;
}
public boolean onQueryTextChange(String newText) {
Log.i("newText", newText);
if (newText.isEmpty()) {
adapter.filter("");
listView.clearTextFilter();
} else {
adapter.filter(newText);
}
return true;
}
});
は私のアダプタである: -
class ListAdapter extends BaseAdapter {
private static LayoutInflater inflater = null;
private Activity activity;
private HashMap<String, String> data;
private List<String> username = new ArrayList();
private ArrayList<HashMap<String, Object>> list;
public ListAdapter(Activity a, HashMap<String, String> d) {
this.activity = a;
this.data = d;
inflater = (LayoutInflater) this.activity.getSystemService("layout_inflater");
}
public int getCount() {
return username.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return (long) position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null) {
vi = inflater.inflate(R.layout.main_list_adapter, null);
}
ImageView image = (CircularImageView) vi.findViewById(R.id.img);
((TextView) vi.findViewById(R.id.txt)).setText(username.get(position));
Picasso.with(this.activity.getApplicationContext()).load(data.get(this.username.get(position))).placeholder(R.mipmap.empty_photo).resize(70, 70).into(image);
return vi;
}
public void filter(String charText) {
username.clear();
if (charText.length() == 0) {
username.addAll(data.keySet());
} else {
for (String s : data.keySet()) {
if (s.contains(charText)) {
username.add(s);
}
}
}
notifyDataSetChanged();
}
public void refresh(HashMap<String, String> newData) {
data = newData;
username.clear();
username.addAll(data.keySet());
notifyDataSetChanged();
}}
ヘルプは本当にみんなに理解されるであろう。私は周りを見ているが、私はそれを見つけることができません。
user = userList.get(position)を置き換えると、私はusernameの値を取得しています。 adapter.getItem(position);を使用します。 –
ListAdapter関数getItemが更新されましたか? – steevoo