簡體   English   中英

如何在ListView的每個項目中都有一個AutoCompleteTextView

[英]How to have a AutoCompleteTextView in each item of a ListView

我已經嘗試了一段時間,但似乎無法做到。 我將適配器應用於對象,但是當我在視圖中輸入字符時,仍然沒有任何反應。

public View getView(int position, View view, ViewGroup parent) {
    ViewHolder holder;
    if (view == null) {
        holder = new ViewHolder();

        view = mInflater.inflate(R.layout.list_item, parent, false);

        holder.nameTxt = (AutoCompleteTextView) view.findViewById(R.id.name_txt);

        String[] drinkArray = activity.getResources().getStringArray(R.array.drink_array);
        holder.adapter = new ArrayAdapter<>(activity, android.R.layout.simple_list_item_1, drinkArray);
        holder.nameTxt.setAdapter(holder.adapter);

        view.setTag(holder);
    } else {
        holder = (ViewHolder) view.getTag();
    }

    if (!itemExists(position)) return view;

    ListItem item = getItem(position);
    holder.nameTxt.setText(item.name);

    holder.nameTxt.setAdapter(holder.adapter);

    holder.nameTxt.setTag(position);

    holder.nameTxt.setOnFocusChangeListener(this);

    return view;
}

@Override
public void onFocusChange(View v, boolean hasFocus) {
    if (hasFocus) return;
    int position;
    ListItem item;
    switch (v.getId()) {
        case R.id.name_txt:
            position = (int) v.getTag();
            if (!itemExists(position)) return;
            item = getItem(position);
            AutoCompleteTextView txtView = (AutoCompleteTextView) v;
            item.name = txtView.getText().toString();
            break;
        default:
            Log.e(TAG, "Unknown onFocusChange View ID: " + v.getId());
            break;
    }
}

public class ViewHolder {
    public AutoCompleteTextView nameTxt;
    public ArrayAdapter<String> adapter;
}

public class ListItem {
    public String name;

    public ListItem() {
        name = "";
    }
}

好的,上面的代碼是我到目前為止所擁有的,可以完美地保存和加載來自textview的數據。

我認為您的方法getView else中存在錯誤。 您可以嘗試以下更改

holder=(viewHolder) View.getTag();

通過

holder = view;

然后別的這種類型

ViewHolder item = (ViewHolder) holder.getTag();
...

我找到了完成此任務的方法。 我將普通的TextView放在ListView(ListView1)中,然后在ListView1的頂部創建另一個ListView(ListView2)。 然后,根據用戶在ListView1中單擊的項目,我將項目編號(位置)和用戶單擊的TextViewer中的文本傳遞給ListView2,在這里它可以設置自身的上邊距並過濾其結果。 設置頂部邊距會將其移動到用戶單擊的TextView下。 如果有人想要編寫代碼,則只需注釋,然后不正確地更新答案即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM