2

目前我正在从我的数据库中获取项目并将它们添加到一个名为 result 的字符串中,我将其返回并设置到我的 TextView 中:

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.level);
    loadDataBase();

    int level = Integer.parseInt(getIntent().getExtras().getString("level"));

    questions = new ArrayList<Question>();
    questions = myDbHelper.getQuestionsLevel(level);

    tvQuestion = (TextView) findViewById(R.id.tvQuestion);

    i = 0;
        String data = getAllItems();
        tvQuestion.setText(data);
}
private String getAllItems() {
    result = "";

    for (i = 0; i<9; i++){
        result = result + questions.get(i).getQuestion() + "\n";
    }

    return result;
    // TODO Auto-generated method stub

}

问题是,所有这些项目在数据库中也有一个标题(字符串)和图形拇指(字符串)。我想如下图所示展示它们,每个上面都有一个 onclicklistener,而不是一个无聊的项目列表。每个项目都有一个图片和标题。自从我开始编程技能以来,我想知道如何最好地做到这一点,如果你知道任何很好的教程可以很好地解释它吗? 图像列表 谢谢!

4

1 回答 1

2

如果我理解您的问题,您需要创建一个自定义适配器。

像这样创建一个新的简单类,其中包含一个字符串和一张图片

    Class ObjectHolder {
      int Image;
      String Title;
    }

并为这两个创建一个 getter 和 setter

然后创建自定义 ArrayAdapter

    Class CustomArrayAdapter extends ArrayAdapter<ObjectHolder> {


      public CustomArrayAdapter(Context C, ObjectHolder[] Arr) {
        super(C, R.layout.caa_xml, Arr);
      }

    @Override
    public View getView(int position, View v, ViewGroup parent)
    {
    View mView = v ;
    if(mView == null){
        LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mView = vi.inflate(R.layout.cpa_xml, null);
    }
    TextView text = (TextView) mView.findViewById(R.id.tv_caarow);
    ImageView image = (ImageView) mView.findViewById(R.id.iv_caarow);
    if(mView != null )
    {   text.setText(getItem(position).getText());
        image.setImageResource(getItem(position).getImage());
    return mView;
    }
    }

并在 res\layout\ 中创建 caa_xml.xml

   <?xml version="1.0" encoding="utf-8"?>
   <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" >
     <ImageView
       android:id="@+id/iv_caarow"
       android:src="@drawable/icon"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content" />
     <TextView
       android:id="@+id/tv_caarow"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:paddingBottom="15dip"
       android:layout_BottomOf="@+id/iv_caarow" />
   </RelativeLayout>

并像这样使用它。

   GridView GV= (GridView) findViewById(R.Id.gv); // reference to xml or create in java
   ObjectHolder[] OHA;
   // assign your array, any ways!
   mAdapter CustomArrayAdapter= CustomArrayAdapter(this, OHA);
   GridView.setAdapter(mAdapter);
于 2012-09-21T14:42:52.747 回答