Android自定义listView应用程序一直没有显示任何内容而崩溃

时间:2017-03-06 13:14:04

标签: android listview android-arrayadapter

我正在尝试构建自定义listView(布局仅包含3个textViews)。 下面是我的代码,我只是扩展ArrayAdapter<String>并填写我自己的构造函数,但在执行时,应用程序一直在崩溃而没有显示任何内容。

import android.content.res.Resources;
// ... more imports

public class MainActivity extends Activity {
    Resources res = getResources( );
    String[] days = res.getStringArray(R.array.days);
    String[] title = res.getStringArray(R.array.title);
    String[] desc = res.getStringArray(R.array.desc);

    ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

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

        customArrayAdapter adp = new customArrayAdapter(this, days, title, desc);

        lv.setAdapter(adp);
    }
}

class customArrayAdapter extends ArrayAdapter<String> {
    Context context;
    String[] title;
    String[] desc;

    customArrayAdapter(Context c, String[] name, String[] title, String[] desc) {
        super(c, R.layout.single_row, R.id.tv1, name);

        this.context = c;
        this.title = title;
        this.desc = desc;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View row = inf.inflate(R.layout.single_row, parent, false);

        TextView tv1 = (TextView) row.findViewById(R.id.tv1);
        TextView tv2 = (TextView) row.findViewById(R.id.tv2);
        TextView tv3 = (TextView) row.findViewById(R.id.tv3);

        tv2.setText(title[position]);
        tv3.setText(desc[position]);

        return row;
    }
}

2 个答案:

答案 0 :(得分:0)

public class MainActivity extends Activity {
    Resources res;
    //stuff

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        res = getResources();

        //stuff
    }
}

答案 1 :(得分:-1)

        Context context;
        ListView lv;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            context = getApplicationContext();

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

            customArrayAdapter adp = new customArrayAdapter(context, days, title, desc);

            lv.setAdapter(adp);
        }