2012-07-09 22 views
0

我在做一个简单的“任务”应用程序。每个任务都包含一个要做的事情清单。我想通过显示每个任务标题的按钮来显示任务列表。Android:如何使用数据库中的文本信息制作按钮列表

我有一个数据库中的每个任务和规格。遵循一些教程,如this one,他们使用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(); 
    } 

} 

在此先感谢!

+0

告诉我们你卡在哪里。一段代码可能会有所帮助。 – yugidroid 2012-07-09 23:45:02

+0

我已经把活动的代码,但正如我前面所说,'ArrayAdapter'不会工作,因为我没有在'R.layout.questrow'布局中使用文本视图。我正在使用按钮。 – Nocturn 2012-07-09 23:55:28

+0

@Nocturn,在下面查看我的答案。 – yugidroid 2012-07-10 00:23:41

回答

0

你正在对ArrayAdapter进行错误的改编。

与Android的官方documentation,一个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; 
    } 
} 

让我知道是否帮助你:)

+0

谢谢,我不知道如何自定义我自己的阵列适配器。让我检查一下,看看它是否有效! – Nocturn 2012-07-10 22:22:56

相关问题