0

我正在做一个简单的“任务”应用程序。每个任务都包含一份待办事项清单。我想通过显示每个任务标题的按钮显示可用任务列表。

我在数据库中有每个任务及其规格。按照一些类似的教程,他们使用 ArrayAdapter 来显示列表,但它需要布局中的“textview 资源 ID”。我不知道如何将每个任务的标题(我从数据库中检索)传递给布局并将其放在按钮上,因为我从不使用文本视图。

为清楚起见,这里是我从 de DB 中检索数据的活动代码。

public class InProgress extends ListActivity {

    private questspecdao datasource;

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        datasource = new questspecdao(this);
        datasource.open();

        List<questspec> values = datasource.getAllQuests();

        ArrayAdapter<questspec> adapter = new ArrayAdapter<questspec>(this,
                R.layout.questrow, values);
        setListAdapter(adapter);
    }

    @Override
    protected void onResume() {
        datasource.open();
        super.onResume();
    }

    @Override
    protected void onPause() {
        datasource.close();
        super.onPause();
    }

}

提前致谢!

4

1 回答 1

0

您对 ArrayAdapter 进行了错误的调整。

根据 Android 的官方文档,一个 ArrayAdapter,“默认情况下,此类期望提供的资源 id 引用单个 TextView”

这意味着它只支持 TextView 所以你必须像这样实现它:

    ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, array /** Your data String[] goes here. */);

    /** Sets adapter to your declared ListView. */
    youtListView.setAdapter(arrayAdapter);

如果您想要自定义列表项,则必须创建自己的适配器:

public class MyArrayAdapter extends ArrayAdapter<String> {

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            /** Inflate a xml layout to the View. */
        View itemView = inflater.inflate(R.layout.rowlayout, parent, false);

            /**Declare all of your items at the previous defined rowlayout xml file . */
        TextView textView = (TextView) itemView .findViewById(R.id.textView);
        ImageView imageView = (ImageView) itemView .findViewById(R.id.icon);

            /** Set some values to the declared item views. */
        textView.setText(values[position]);
        if (values[position].contains("XXXXXXX")) {
            imageView.setImageResource(R.drawable.x);
        } else {
            imageView.setImageResource(R.drawable.y);
        }

        return itemView;
    }
} 

让我知道这是否对您有帮助:)

于 2012-07-10T00:22:47.533 回答