繁体   English   中英

微调框提示显示包名称而不是提示

[英]Spinner Prompt Displays Package Name Instead Of Prompt

这是我面临的一个奇怪的问题。 数据来自SQLite数据库。 它显示包名称: com.dzinesunlimited.foodzines.free.Administration.Menu.MenuAdministrationActivity而不是“ CHOOSE A CATEGORY ”(在strings.xml定义)。 Spinner在XML中定义:

<Spinner
    android:id="@+id/spnDishCategory"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="11dp"
    android:layout_marginRight="11dp"
    android:popupBackground="@color/panel_medium"
    android:prompt="@string/menu_admin_category_spinner_prompt" >
</Spinner>

这是Java代码:

MenuAdministratorCategoryAdapter adapMenuCategories = new MenuAdministratorCategoryAdapter(
    getActivity(), 
    android.R.layout.simple_spinner_item, 
    arrMenuCategory);

spnDishCategory.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parentView, View v, int position, long id) {

        if (position != -0) {
            String strMenucategory = arrMenuCategory.get(position).getCatID();
            SELECTED_CATEGORY_ID = strMenucategory;
            Log.e("CAT ID", SELECTED_CATEGORY_ID);
            Toast.makeText(getActivity(), String.valueOf(position), Toast.LENGTH_SHORT).show();

            /** CLEAR THE CURRENT GRIDVIEW AND THE ARRAYADAPTER **/
            gridDishes.invalidate();
            adapter.notifyDataSetChanged();
            arrDishes.clear();

            /** CHANGE THE PROMPT **/
            spnDishCategory.setPrompt(arrMenuCategory.get(position).getCatName());

            /** FETCH THE MENUS IN THE SELECTED CATEGORY **/
            new fetchMenusInTheCategory().execute();

            /* INSTANTIATE THE ADAPTER */
            adapter = new MenuAdministrationAdapter(getActivity(), arrDishes);
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {

    }
});

这是AsyncTask ,它从数据库中获取数据:

private class loadMenuCategories extends AsyncTask<Void, Void, Void>    {

    /** AN INTEGER INSTANCE TO HOLD THE TOTAL NUMBER OF ITEMS RETURNED BY THE DATABASE **/
    int intMenuCategories;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        // CONSTRUCT THE QUERY TO FETCH ALL TWEETS FROM THE DATABASE
        String strQueryData = "SELECT * FROM categories";

        // CAST THE QUERY IN THE CURSOR TO FETCH THE RESULTS
        cursor = db.selectAllData(strQueryData);
        intMenuCategories = cursor.getCount();
    }

    @Override
    protected Void doInBackground(Void... params) {

        if (intMenuCategories > 0)  {

            if (cursor != null && cursor.getCount() != 0)   {

                /* AN INSTANCE OF THE MenuAdministratorCategoryData HELPER CLASS */
                MenuAdministratorCategoryData menuCategory;

                for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {

                    /***** INSTANTIATE THE MenuAdministratorCategoryData INSTANCE "menuCategory" *****/
                    menuCategory = new MenuAdministratorCategoryData();

                    /** GET THE CATEGORY ID **/
                    if (cursor.getString(cursor.getColumnIndex(db.CATEGORY_ID)) != null)    {
                        String strCatID = cursor.getString(cursor.getColumnIndex(db.CATEGORY_ID));
                        menuCategory.setCatID(strCatID);
                    } else {
                        String strCatID = null;
                        menuCategory.setCatID(strCatID);
                    }

                    /** GET THE CATEGORY NAME **/
                    if (cursor.getString(cursor.getColumnIndex(db.CATEGORY_NAME)) != null)  {
                        String strCatName = cursor.getString(cursor.getColumnIndex(db.CATEGORY_NAME));
                        menuCategory.setCatName(strCatName);
                    } else {
                        String strCatName = null;
                        menuCategory.setCatName(strCatName);
                    }

                    /** ADD THE COLLECTED DATA TO THE ARRAYLIST **/
                    arrMenuCategory.add(menuCategory);
                }
            }

        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);

        // CLOSE THE CURSOR
        if (cursor != null && !cursor.isClosed())   {
            cursor.close();
        }

        // CLOSE THE DATABASE
        db.close();

        // SET THE ADAPTER TO THE GRIDVIEW
        spnDishCategory.setAdapter(adapMenuCategories);

        new showDefaultMenuCategory().execute();
    }

}

这是适配器:

public View getDropDownView(int position, View convertView, ViewGroup parent) {

    View row = convertView;

    if (row == null)    {
        row = inflater.inflate(R.layout.menu_fragment_category_spn_row, parent, false);
    }

    TextView txtCategoryCode = (TextView) row.findViewById(R.id.txtCategoryCode);
    Typeface fntCategoryCode = Typeface.createFromAsset(activity.getAssets(), "fonts/RobotoCondensed-Regular.ttf");
    txtCategoryCode.setTypeface(fntCategoryCode);

    /** SET THE CATEGORY NAME **/
    String strCatName = arrMenuCategory.get(position).getCatName();
    if (strCatName != null) {
        txtCategoryCode.setText(strCatName);
    }

    return row;
}

外观: 在此处输入图片说明

感谢您帮助我解决此问题的任何帮助。

PS:如果需要任何其他代码,请告诉我。

编辑 :几乎忘了。 这是自定义微调框。 该行的自定义布局为:

menu_fragment_category_spn_row.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/txtCategoryCode"
    android:layout_width="fill_parent"
    android:layout_height="56dp"
    android:background="#ff171717"
    android:gravity="left|center"
    android:maxLines="1"
    android:padding="11dp"
    android:text="INVENTORY CATEGORY CODE"
    android:textColor="#F9F9F9"
    android:textSize="18sp" >

</TextView>

也许已经来不及了,但是也许这个答案可以帮助任何其他面临此问题的开发人员。

只需使用与下拉视图相同的实现重写适配器中的getView方法即可:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    return getDropDownView(position, convertView, parent);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM