私は Android プログラミング クラスの課題に取り組んでいます。私はスプーンで供給されたコードを探していませんが、問題の原因を突き止めることはできません.
割り当ての詳細には、項目がクリックされたときにリスト内の項目からのデータを表示するために、ListView と複数の TextViews (2 番目のビュー) を含む ViewSwitcher が必要です。ListView にデータを入力するには、TextSwitchers を使用して、表示/変更時にテキストをアニメーション化する必要があります。ViewSwitcher または TextSwitchers のいずれかを使用してシミュレーターでアプリを動作させることができますが、両方を使用することはできません。TextSwitcher.setFactory() メソッドが呼び出されると、エラーがスローされ、アプリが終了します。.setFactory() を呼び出さない場合、プログラムはエラーなしで続行されます。
インストラクターとクラスメートに助けを求めましたが、月曜日に助けを求めて以来、応答したクラスメートは 1 人だけでした。この課題は現在 1 週間以上遅れているので、この時点で 0 を取得できると想定していますが、次のプロジェクトはこのプロジェクトから構築されるため、まだ完了する必要があります。
実際のコードを優先して 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;
}
ありがとうございました!