0

getViewビューホルダーとそれに要素を設定/アクセスする際に問題が発生しています。NullPointerExceptionビューホルダーに を設定しようとすると、一貫して を受け取りtextViewます。データをテストし、プロセスを段階的にログに記録しましたが、何らかの理由でビューが正しく設定されていないように見えますか、それともアクセスしようとしている要素がそうではありませんか? logcat ショーの最初の数行:

04-13 20:55:13.620: W/dalvikvm(23329): threadid=1: thread exiting with uncaught exception (group=0x40dd8930)
04-13 20:55:13.644: E/AndroidRuntime(23329): FATAL EXCEPTION: main
04-13 20:55:13.644: E/AndroidRuntime(23329): java.lang.NullPointerException
04-13 20:55:13.644: E/AndroidRuntime(23329):    at com.idealiner.metrosleepuniversal.adapter.LocationModelGridAdapter.getView(LocationModelGridAdapter.java:99)

99 行目は、textView 要素にアクセスしようとしたときです。

viewHolder.textView.setText(locationModel.col_line);

locationModel.col_line null 値を返さないことをテストしました。Viewholderどういうわけかアクセスできないようです...またはtextViewが見つからないのですか?よくわかりません。

getView メソッド全体:

    public View getView(int position, View convertView, ViewGroup parent) {

        View       view = convertView;
        ViewHolder viewHolder;

        if (view == null || view.getTag() == null) {

            view = mInflater.inflate(R.layout.grid_view, parent, false);

            viewHolder = new ViewHolder();
//            viewHolder.imageView = (ImageView) view.findViewById(R.id.grid_image);
            viewHolder.textView  = (TextView) view.findViewById(R.id.grid_label);
            view.setTag(viewHolder);

            Log.v("GetViewAdapter", "View is null, setup viewholder");

        }else {

            viewHolder = (ViewHolder) view.getTag();
            Log.v("GetViewAdapter", "View is not null, setup viewholder");

        }

        lineModel locationModel = mLine[position];

        Log.v("GetViewAdapter", "mline has a position of: " + position);
        Log.v("GetViewAdapter", "mline has a name of: " + locationModel.col_line);

        if(locationModel!=null) {

            viewHolder.textView.setText(locationModel.col_line);
        }

        return view;
    }

クラスの残りのコードは、https ://gist.github.com/markbratanov/5380875 にあります。

私はこれについて一日中考えていたので、アドバイスやヒントをいただければ幸いです。ありがとう。

4

3 に答える 3

0

@Ted-hopp が言ったように、textView が内部にないビューホルダーとして間違ったレイアウトを膨らませていたため、textView は null でした。

ご協力いただきありがとうございます!

于 2013-04-14T21:31:02.000 に答える
0

それがあなたの問題を解決するかどうかはわかりませんが、定義を見て、

view.findViewById(R.id.grid_label)

「指定された ID を持つ子ビューを探します。このビューに指定された ID がある場合は、このビューを返します。」

再利用するビューがR.id.grid_label...

于 2013-04-14T01:49:59.203 に答える
0

TextView には、「String」または「CharSequence」のみを表示できます。

だから、これを試してくださいviewHolder.textView.setText((location.col_line).toString());

于 2013-04-14T05:01:08.327 に答える