Android 带有奇怪文本的微调器下拉列表
我正在开发一个带有微调器的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
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文本。