我正在为Android编程类工作。我不是在寻找用勺子喂的代码,但我无法弄清楚是什么导致了这个问题。
分配的细节要求我有一个ViewSwitcher,它包含一个ListView和多个TextViews(在第二个视图上),用于在单击项目时显示列表中项目的数据。要填充ListView,我们必须使用TextSwitchers在显示/更改文本时为其设置动画。我可以使用ViewSwitcher或TextSwitchers让应用程序在模拟器中工作,但不能同时使用两者。调用TextSwitcher.setFactory()方法时抛出错误并终止应用程序;如果我不调用.setFactory(),程序会继续运行而不会出错。
我已经向我的导师和同学们寻求帮助,自从我周一请求帮助以来,只有一位同学做出了回复。这个任务现在已经晚了一个多星期了,所以我只是假设我现在会得到一个零,但是,下一个项目是建立在这个项目的基础上,所以我仍然需要完成它。
放弃发布xml以支持实际代码:
public View getView(int position, View convertView, ViewGroup parent)
{
ViewGroup listItem = null;
TextSwitcher stockNameTS = null;
TextSwitcher stockSymbolTS = null;
TextSwitcher stockPriceTS = null;
StockInfo stockInfo = null;
if(convertView == null)
{
listItem = (ViewGroup) getLayoutInflator().inflate(R.layout.list_item, null);
listItem.setTag(getParent());
stockInfo = stockList.get(position);
//Get TextSwitchers
stockNameTS = (TextSwitcher) listItem.findViewById(R.id.stockNameTS);
stockSymbolTS = (TextSwitcher) listItem.findViewById(R.id.stockSymbolTS);
stockPriceTS = (TextSwitcher) listItem.findViewById(R.id.stockPriceTS);
stockNameTS.setFactory(new ViewFactory() {//throws here
@Override
public View makeView() {
TextView tv = new TextView(MainActivity.this);
tv.setTextSize(20);
return tv;
}
});
stockSymbolTS.setFactory(new ViewFactory() {
@Override
public View makeView() {
TextView tv = new TextView(MainActivity.this);
tv.setTextSize(20);
return tv;
}
});
stockPriceTS.setFactory(new ViewFactory() {
@Override
public View makeView() {
TextView tv = new TextView(MainActivity.this);
tv.setTextSize(20);
return tv;
}
});
//Set animations
stockNameTS.setInAnimation(MainActivity.this, android.R.anim.slide_in_left);
stockNameTS.setOutAnimation(MainActivity.this, android.R.anim.slide_out_right);
stockSymbolTS.setInAnimation(MainActivity.this, android.R.anim.slide_in_left);
stockSymbolTS.setOutAnimation(MainActivity.this, android.R.anim.slide_out_right);
stockPriceTS.setInAnimation(MainActivity.this, android.R.anim.slide_in_left);
stockPriceTS.setOutAnimation(MainActivity.this, android.R.anim.slide_out_right);
}
else
{
listItem = (ViewGroup) convertView;
}
stockNameTS.setText(stockInfo.getName());
stockSymbolTS.setText(stockInfo.getSymbol());
stockPriceTS.setText(USDFormat.format(stockInfo.getPrice()));
return listItem;
}
谢谢!
答案 0 :(得分:0)
一位同学看了一下这个项目并说我的问题是我的MainActivity扩展了ActionBarActivity而不是Activity。我不明白为什么Android会区分它,但它确实和改变扩展Activity解决了这个问题。