不显示2行列表视图

时间:2015-04-22 19:28:53

标签: java android

我正在尝试在我的活动中创建一个2行列表视图,但是我遇到了一个我不知道如何解决的错误。我怎样才能实现AppCompat的这种方式?我希望在附带的截图中实现类似的功能。我的错误在第52行。

public class WCLineActivity extends ActionBarActivity {

    private class Sample {
        private CharSequence title;
        private CharSequence summary;
        private Class<? extends Activity> activityClass;

        public Sample(int titleResId, int summaryResId, Class<? extends Activity> activityClass) {
            this.activityClass = activityClass;
            this.title = getResources().getString(titleResId);
            this.summary = getResources().getString(summaryResId);

        }

        @Override
        public String toString() { return title.toString(); }
        public String getSummary(){ return summary.toString(); }
    }

    private static Sample[] mSamples;

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

        // Instantiate the list of samples.
        mSamples = new Sample[]{
                new Sample(R.string.bank, R.string.zone_1, MainActivity.class),
                new Sample(R.string.waterloo, R.string.zone_1, MainActivity.class)
        };

        setListAdapter(new MyAdapter(this, mSamples));
    }

    static class MyAdapter extends BaseAdapter {

        static class ViewHolder {
            TextView title;
            TextView summary;
        }

        LayoutInflater inflater;
        Sample[] mSamples;

        public MyAdapter(Context contexts, Sample[] samples) {
            this.mSamples = samples;
            inflater = LayoutInflater.from(contexts);

        }

        @Override
        public int getCount() {
            return mSamples.length;
        }

        @Override
        public Object getItem(int position) {
            return mSamples[position];
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder viewHolder;
            if (convertView == null) {
                convertView = inflater.inflate(R.layout.list_item_dualline, null);
                viewHolder = new ViewHolder();

                viewHolder.title = (TextView) convertView.findViewById(R.id.list_item_title);
                viewHolder.summary = (TextView) convertView.findViewById(R.id.list_item_subtitle);
                convertView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            viewHolder.title.setText(mSamples[position].title);
            viewHolder.summary.setText(mSamples[position].getSummary());
            return convertView;
        }
    }
}

phone

error

enter image description here

2 个答案:

答案 0 :(得分:2)

setListAdapter是一种ListActivity方法,Activity无法使用。要克服它,您可以在布局中声明ListView,在ListView上检索findViewById并在该对象上调用setAdapter。 E.g。

ListView listView = (ListView) findViewById(R.id.id_list);
listView.setAdapter(new MyAdapter(this, mSamples)); 

答案 1 :(得分:1)

我尝试使用您的代码

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_wc_line);
    ListView listView = (ListView) findViewById(R.id.listView);
    // Instantiate the list of samples.
    mSamples = new Sample[]{
            new Sample(R.string.bank, R.string.zone_1, MainActivity.class),
            new Sample(R.string.waterloo, R.string.zone_1, MainActivity.class)
    };

    listView.setAdapter(new MyAdapter(this, mSamples));
    }