0

私は 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;
    }

ありがとうございました!

4

1 に答える 1

0

仲間の同級生がプロジェクトを見て、私の問題は、私の MainActivity が Activity ではなく ActionBarActivity を拡張したことだと言いました。Android がそれを区別する理由はわかりませんが、Activity の拡張に変更することで問題が解決しました。

于 2014-06-28T21:20:36.540 に答える