1

私は次のようにgetviewメソッドをオーバーライドしようとしています:

public class MyArrayAdapter extends ArrayAdapter {
private final Context context;
  private final ArrayList<DataList> values;
  private final  LayoutInflater li = LayoutInflater.from(this.getContext());


  public MyArrayAdapter(Context context, int    textViewResourceId,ArrayList<DataList> values) {
    super(context,textViewResourceId, values);
    this.context = context;
    this.values = values;
  }

  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      ViewHolder holder;

        if(convertView==null){
            convertView=li.inflate(R.layout.simplerow,parent,false);
            holder=new ViewHolder();
            holder.text=(TextView)   convertView.findViewById(R.layout.simplerow);
            convertView.setTag(holder);
        }else{
            Log.d("a","entre else");
            holder=(ViewHolder)convertView.getTag();
       }
        DataList b=values.get(1);
        String c=b.toString();
        holder.text.setText(values.get(position).toString());
        try {

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return convertView;
    }

  static class ViewHolder {
      TextView text;
    }

到達するたび holder.text.setText(values.get(position).toString())null pointer exceptionエラーが発生します。VALUESはarraylistタイプDataListであり、Datalistは2つの文字列を返す私のクラスです。私はValuesがnullではないことを知っています。

4

1 に答える 1

3

NullPointerExceptionがスローされる理由holder.textは、間違ったIDを使用しているためです。

convertView.findViewById(R.layout.simplerow);

したがって、をfindViewById()返しますnull。次のようなものを試してください:

convertView.findViewById(R.id.textView); // I made up a name, but notice the difference?
于 2013-03-06T16:37:51.087 に答える