如何将文本或图像添加到自定义列表视图

时间:2012-02-15 11:47:44

标签: android listview adapter

我正在尝试将一个字符串数组和一个图像添加到列表视图中。我设法在列表视图中推断每一行,但现在我无法在列表视图中看到每行中的文本。我还想在列表视图中的每一行添加一个图像。我想我需要使用不同的适配器..

代码:

 todoItems.add(redString);
   todoItems.add(blueString);
   todoItems.add(yellowString);
 final ArrayAdapter<String> aa  = new ArrayAdapter<String>(this, R.layout.listviewitem,todoItems);
  mylistListView.setAdapter(aa);

listviewitem XML:

<com.todo.ListViewItem
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dp"
android:scrollbars="vertical"
android:textColor="@color/notepad_text"
android:fadingEdge="vertical"
>    

2 个答案:

答案 0 :(得分:0)

以下是自定义listView上的一些问题。阅读thisthis链接。

答案 1 :(得分:0)

我建议你在列表中使用布局inflaters。这是一个例子。

1)main.xml

 <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="match_parent"
  android:layout_height="match_parent" android:weightSum="1">


  <ListView android:layout_width="match_parent"     
   android:id="@android:id/list" android:layout_alignParentTop="true"   
   android:layout_height="330dp" 
   android:layout_weight="0.48"></ListView>
   </LinearLayout>

2)创建一个名为“list.xml”的布局,其中包含您希望在列表中包含的文本和图像。

private LayoutInflater mInflater;
    try{
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    getList();


    }catch(Exception e){

    }


private void getList(final ArrayList<Object> asdf) {


    setListAdapter(new ArrayAdapter<Object>(MainActivity.this,
            R.layout.list, asdf) {

        @Override
        public View getView(final int position, View convertView,
                ViewGroup parent) {

             View row;

            if (null == convertView) {
                row = mInflater.inflate(R.layout.list, null);
            } else {
                row = convertView;
            }

            TextView text1 = (TextView) row.findViewById(R.id.text1);
            ImageView im = (ImageView) row.findViewById(R.id.image1);

            row.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {

                }
            });

            return row;
        }

    });

}