【问题标题】:Android: Spinner setSelection by TagAndroid:Spinner setSelection by Tag
【发布时间】:2024-05-03 04:00:03
【问题描述】:

我定义 BaseAdapter 以使用来自 SQL 的记录填充 Spinner 我将 Spinner 中的项目的标签设置为等于 SQL 数据库中的记录 ID。

public static class Refueling_Adapter extends BaseAdapter {
    private Context vContext;
    private List<Banziny.Refuel> mRefuelingList;
    //private int mListing;

    public Base_Adapter(Context vContext, List<AppTest.basic> mBaseList) {
        this.vContext = vContext;
        this.mBaseList = mBaseList;
    }

    @Override
    public int getCount() {
        return mBaseList.size();
    }

    @Override
    public Object getItem(int position) {
        return mBaseList.get(position);
    }

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

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

            convertView = View.inflate(vContext, R.layout.item_base, null);
            convertView.setTag(mBaseList.get(position).getBase_id());

            TextView Basename = (TextView) convertView.findViewById(R.id.txt_Base_name);
            Basename.setText(mBaseList.get(position).getBase_name());


        return convertView;
    }
}

如您所见,我将微调器项目的标记设置为等于 SQL 记录 ID。 现在我只需要知道如何使用等于 SQL 记录 ID 的 Tag 为 Spinner 设置 Selected。

int baseidtoselect = mBaseList.get(0).getBase_ID();

从数据库中检索到这个 id,我需要在 spinner 中找到标签。

【问题讨论】:

    标签: android android-sqlite android-spinner


    【解决方案1】:

    你可以使用这个功能

    public static void selectItemByTag(Spinner spinner, int tag) {
        Refueling_Adapter adapter = (Refueling_Adapter) spinner.getAdapter(); // it is Refueling_Adapter because your Spinner use Refueling_Adapter
        for (int position = 0; position < adapter.getCount(); position++) {
            if(((YourObjectModel)adapter.getItem(position)).getBase_id() == tag) { // YourObjectModel here is AppTest.basic
                spinner.setSelection(position);
                return;
            }
        }
    }
    

    【讨论】:

    • 我有这个问题 ((YourObjectModel)adapter.getItem(position)).getBase_id()
    • 我已经根据我的代码对其进行了调整,但这个想法对我来说似乎很好。谢谢