3

カスタム ListView アダプターを作成しようとしています (大まかにこのチュートリアルに基づいていますが、例は十分に単純なので、それを見る必要があるとは思えません)。

NewsEntriesAdapter.java

public class NewsEntriesAdapter extends BaseAdapter {
    private static ArrayList<NewsEntries> newsEntriesArrayList;

    private final LayoutInflater mInflater;

    public NewsEntriesAdapter(Context context, ArrayList<NewsEntries> entries) {
        newsEntriesArrayList = entries;
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public int getCount() {
        return newsEntriesArrayList.size();
    }

    @Override
    public Object getItem(int position) {
        return newsEntriesArrayList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

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

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.assignment_list_row_view,
                    null);
            holder = new ViewHolder();
            holder.txtName = (TextView) convertView.findViewById(R.id.name);
            holder.txtCityState = (TextView) convertView
                    .findViewById(R.id.cityState);
            holder.txtPhone = (TextView) convertView.findViewById(R.id.phone);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.txtName.setText(newsEntriesArrayList.get(position).getName());
        holder.txtCityState.setText(newsEntriesArrayList.get(position)
                .getCityState());
        holder.txtPhone.setText(newsEntriesArrayList.get(position).getPhone());

        return convertView;
    }

    static class ViewHolder {
        TextView txtName;
        TextView txtCityState;
        TextView txtPhone;
    }

}

MainActivity.java (onCreate メソッド)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ArrayList<NewsEntries> results = new ArrayList<NewsEntries>();

    // I left the NewsEntries class out of this question; it's just a POJO with some get and set methods for Name, CityState, and Phone
    NewsEntries sr = new NewsEntries();
    sr.setName("Justin Schultz");
    sr.setCityState("San Francisco, CA");
    sr.setPhone("415-555-1234");
    results.add(sr);

    final ListView lv = (ListView) findViewById(R.id.list);

    System.out.println(results.get(0).getName());

    lv.setAdapter(new NewsEntriesAdapter(this, results));
}

ただし、lv.setAdapterこのすぐ上の行は、null ポインター例外でアプリをクラッシュさせます。

何か案は?

4

1 に答える 1

13

にコンテンツを設定していませんActivitysetContentViewあなたの にまたはaddContentViewコールがありませんonCreate

したがって、ビューがまったくないためfindViewByIdビューを見つけることができず、 が返されます。null

于 2013-01-01T23:27:37.260 に答える