如何在每行中使用ImageView和TextView制作一个Android ListView?

时间:2011-09-30 18:24:37

标签: android listview textview imageview

  

可能重复:
  Can I have a List view and images icon with textview on the Android

如何在每行中使用ImageView和TextView创建一个Android ListView?

我正在开发一个Android应用程序,它将有一个带有ListView的屏幕,并且每行需要一个ImageView和一个TextView ......有人可以帮我解决一些线索和样本吗? / p>

3 个答案:

答案 0 :(得分:4)

您需要教授ListAdapter如何做到这一点。如果这是getView(),则可以通过对其进行子类化并覆盖ArrayAdapter。您可以设计自己的自定义行并使用这些行,并在行加载时填入ImageViewTextView的数据。

来自Here is a free excerpt

one of my books经历了整个过程。 Here is the source code到该章中描述的示例项目。

答案 1 :(得分:0)

简而言之,您应该使用ListActivity。您将能够为每一行设置布局xml。

看看这个 tutorial:

您需要做的是相同的,但要使其适应除了textview之外的ImageView。

答案 2 :(得分:0)

如上所述,您需要扩展适配器并在ListActivity中使用它。使用TextView和ImageView创建XML文件(使用LinearLayout或任何其他布局)。您可以向TextView和ImageView添加ID,以便根据列表中的位置更改它们。

这是一个代码示例,它创建三行并将其中的文本设置为a,b,c。

public class MyActivity extends ListActivity {

    private String[] data = {"a","b","c"};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new MyAdapter(this, R.layout.rowxml, data));
    }

    private class MyAdapter extends ArrayAdapter<String> {

        public MyAdapter(Context c, int i, String[] s) {
            super(c, i, s);
        }

        @Override
        public View getView(int position, View v, ViewGroup parent) {
            if (v == null) {
                LayoutInflater vi = (LayoutInflater)getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.rowxml, null);
            }

            TextView tw = (TextView) v.findViewById(R.id.text);
            if (tw != null) tw.setText(data[position]);

            // You can do something similar with the ImageView  

            return v;
        }
    }
}