Android 带有奇怪文本的微调器下拉列表

Android 带有奇怪文本的微调器下拉列表,android,spinner,android-arrayadapter,Android,Spinner,Android Arrayadapter,我正在开发一个带有微调器的Android应用程序 我有一个问题: 这是微调器阵列适配器代码: public class OrderArticlesAdaper extends ArrayAdapter<Article> { private Context mContext; private int layoutResourceId; private ArrayList<Article> articles; public OrderArt

我正在开发一个带有微调器的Android应用程序

我有一个问题:

这是微调器阵列适配器代码:

public class OrderArticlesAdaper extends ArrayAdapter<Article>
{
    private Context mContext;
    private int layoutResourceId;
    private ArrayList<Article> articles;

    public OrderArticlesAdaper(Context context, int listItemResourceId,
            ArrayList<Article> dbArticles)
    {
        super(context, listItemResourceId, dbArticles);

        this.mContext = context;
        this.layoutResourceId = listItemResourceId;
        this.articles = dbArticles;
    }

    public ArrayList<Article> getArticles()
    {
        return this.articles;
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent)
    {
        Log.v("OrderArticlesAdaper", "getView.postion: " + position);
        View row = convertView;
        if (row == null)
        {
            LayoutInflater inflater = ((Activity)mContext).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);
        }

        Article article = articles.get(position);
        if (article != null)
        {
            TextView formNameView = (TextView)row.findViewById(android.R.id.text1);
            formNameView.setText(new Long(article.getArticleId()).toString());
        }
        return row;
    }
}
公共类OrderArticlesDaper扩展了ArrayAdapter
{
私有上下文;
私人内部布局资源;
私人ArrayList文章;
public OrderArticlesDaper(上下文,int-listItemResourceId,
ArrayList(数据库项目)
{
super(上下文、listItemResourceId、dbarticle);
this.mContext=上下文;
this.layoutResourceId=listItemResourceId;
this.articles=dbArticles;
}
公共ArrayList getArticles()
{
归还此物品;
}
@凌驾
public int getCount()
{
返回物品。大小();
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图)
{
Log.v(“OrderArticlesDaper”,“getView.position:+position”);
视图行=转换视图;
if(行==null)
{
LayoutFlater充气器=((活动)mContext.getLayoutFlater();
行=充气机。充气(layoutResourceId,父级,false);
}
Article=articles.get(位置);
if(article!=null)
{
TextView formNameView=(TextView)row.findViewById(android.R.id.text1);
formNameView.setText(新的Long(article.getArticleId()).toString());
}
返回行;
}
}
这是加载微调器数据的异步任务:

private class LoadEReportAsyncTask extends AsyncTask<String, Void, Boolean>
{
    private Context mContext;
    private ProgressDialog loadingDialog;
    private EReport eReport;
    private QAP qap;

    public LoadEReportAsyncTask(Context context)
    {
        Log.v("LoadEReportAsyncTask", "constructor");
        eReport = null;
        qap = null;

        this.mContext = context;
        loadingDialog = new ProgressDialog(mContext);
        loadingDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        loadingDialog.setMessage(getString(R.string.msg_loading_ereport));
        loadingDialog.setCancelable(false);
        loadingDialog.show();
    }

    @Override
    protected Boolean doInBackground(String... params)
    {
        Log.v("LoadEReportAsyncTask", "doInBackground");
        DBManager dbMan;
        dbMan = new DBManager(mContext);

        // Es un nuevo EReport, por lo tanto lo creo en la base de datos.
        if (eReportId == -1)
        {
            // Time In
            TextView aux = (TextView)((EReportFinalInspecActivity) mContext).findViewById(R.id.timeInVal);

            Calendar c = Calendar.getInstance();
            SimpleDateFormat df3 = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
            String timeIn = df3.format(c.getTime());
            aux.setText(timeIn);

            eReport = new EReport();
            eReport.setOrderId(orderId);
            eReport.setQapId(qapId);
            eReport.setTimeIn(timeIn);

            eReportId = dbMan.insertEReport(eReport);
        }
        else
        {
            eReport = dbMan.getEReport(eReportId);
        }

        qap = dbMan.getQPA(params[0]);
        ordersArticles = dbMan.getOrderArticles(orderId);

        selectedArticles = new ArrayList<Article>(ordersArticles.size());

        return true; // TODO: Controlar los errores
    }

    protected void onPostExecute(Boolean result)
    {
        Log.v("LoadEReportAsyncTask", "onPostExecute");

        EReportFinalInspecActivity act = (EReportFinalInspecActivity) mContext;
        if (result)
        {
            Toast.makeText(getApplicationContext(), getString(R.string.msg_ereport_got_correct), Toast.LENGTH_SHORT).show();

            act.fillEReport(eReport, qap);
            Spinner articleSpin = (Spinner) act.findViewById(R.id.articlesSpiner);
            OrderArticlesAdaper spinAdapter = new OrderArticlesAdaper(mContext, android.R.layout.simple_spinner_item, ordersArticles);
            spinAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            articleSpin.setAdapter(spinAdapter);

            // TODO: Esto hay que cambiarlo porque siempre habrá QAP.
            if (qap != null)
                act.eReportHasQAP(true, qap.getName());
            else
                act.eReportHasQAP(false, null);
        }
        else
        {
            Toast.makeText(getApplicationContext(), getString(R.string.msg_ereport_problem), Toast.LENGTH_LONG).show();
        }

        loadingDialog.dismiss();
    }
}
私有类LoaderPortaSyncTask扩展了AsyncTask
{
私有上下文;
私有进程对话框加载对话框;
私人电子报告;
私人QAP;
公共LoaderPortacyncTask(上下文)
{
Log.v(“LoaderPortacyncTask”、“构造函数”);
eReport=null;
qap=null;
this.mContext=上下文;
loadingDialog=新建ProgressDialog(mContext);
loadingDialog.setProgressStyle(ProgressDialog.STYLE_微调器);
loadingDialog.setMessage(getString(R.string.msg_loading_ereport));
loadingDialog.setCancelable(假);
加载dialog.show();
}
@凌驾
受保护的布尔doInBackground(字符串…参数)
{
Log.v(“LoaderPortacyncTask”、“doInBackground”);
DBManager-dbMan;
dbMan=新的DBManager(mContext);
//这是一个新的港口,在达托斯的基地。
如果(eReportId==-1)
{
//时间
TextView aux=(TextView)((eReportFinalinsSpecActivity)mContext.findViewById(R.id.timeInVal);
Calendar c=Calendar.getInstance();
SimpleDateFormat df3=新的SimpleDateFormat(“dd-MM-yyy-HH:MM:ss”);
字符串timeIn=df3.format(c.getTime());
辅助设置文本(时间输入);
eReport=新eReport();
setOrderId(orderId);
eReport.setQapId(qapId);
eReport.setTimeIn(timeIn);
eReportId=dbMan.insertEReport(eReport);
}
其他的
{
eReport=dbMan.getEReport(eReportId);
}
qap=dbMan.getQPA(参数[0]);
ordersArticles=dbMan.getOrderArticles(orderId);
selectedArticles=newarraylist(ordersArticles.size());
返回true;//TODO:Controlar los错误
}
受保护的void onPostExecute(布尔结果)
{
Log.v(“LoaderPortacyncTask”、“onPostExecute”);
eReportFinalinsSpecActivity act=(eReportFinalinsSpecActivity)mContext;
如果(结果)
{
Toast.makeText(getApplicationContext()、getString(R.string.msg_ereport_got_correct)、Toast.LENGTH_SHORT.show();
填写报告法案(eReport,qap);
微调器articleSpin=(微调器)act.findViewById(R.id.articlesSpiner);
OrderArticlesDaper spinAdapter=新的OrderArticlesDaper(mContext,android.R.layout.simple\u spinner\u项目,OrdersTicles);
spinAdapter.setDropDownViewResource(android.R.layout.simple\u spinner\u dropdown\u项目);
articleSpin.setAdapter(spinAdapter);
//TODO:Esto hay que Cambiaro porque siempre habráQAP。
如果(qap!=null)
act.eReportHasQAP(true,qap.getName());
其他的
eReportHasQAP法案(错误,无效);
}
其他的
{
Toast.makeText(getApplicationContext()、getString(R.string.msg_ereport_problem)、Toast.LENGTH_LONG.show();
}
loadingDialog.disclose();
}
}
我做错了什么?

试试:

formNameView.setText(Long.toString(article.getArticleId()));
编辑:

这只是一个猜测,但可能Android正在使用Article.toString()填充微调器下拉文本视图,因为您的适配器处理Article类型的对象

要测试这一点,请在文章类中重写toString

public class Article {
    ...
    @Override
    public String toString() {
        mArticleId.toString(); // This is the private field holding the long id.
    }
}
尝试:

编辑:

这只是一个猜测,但可能Android正在使用Article.toString()填充微调器下拉文本视图,因为您的适配器处理Article类型的对象

要测试这一点,请在文章类中重写toString

public class Article {
    ...
    @Override
    public String toString() {
        mArticleId.toString(); // This is the private field holding the long id.
    }
}

这不是一种干净的方法,但你能试试吗

formNameView.setText(article.getArticleId()+"");

这不是一种干净的方法,但你能试试吗

formNameView.setText(article.getArticleId()+"");

Article.getArticleId()返回什么数据类型?Article.getArticleId()返回什么数据类型?对。容器项应重写
toString()
方法,返回nesseary text.Right。容器项应重写
toString()
方法,返回nesseary文本。