我正在爲Android編程類進行分配。我不是在尋找勺子餵養的代碼,但我無法弄清楚是什麼導致了這個問題。當調用setFactory()時,TextSwitcher引發「超過2個視圖」錯誤
作業的細節要求我有一個ViewSwitcher,它包含一個ListView和多個TextView(在第二個視圖上),以便在單擊項目時顯示列表中項目的數據。爲了填充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;
}
謝謝!