访问动态创建的视图

时间:2014-04-28 03:57:21

标签: android android-layout listview android-listview

我在[{1}}的{​​{1}} linear Layout中使用了imageViews(有些ListView}。使用静态adapter一切正常。但是,当我创建动态layout时,我无法通过调用imageViewgetView(position, View, ViewGroup)函数访问它们。 (即使我以其他方式获取视图,动态视图也没有在ListVeiw中显示)我想我必须做些什么来在主视图列表中添加这些视图,任何特定的解决方案?

我的代码:

findViewById(ImageViewId)

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

此处添加了动态imageView:

setLayout(2); setupListViewAdapter(); setGrid(bookCoverImages); }

private void setLayout(int imageViews){
        setContentView(R.layout.default_book_view);

}`

ImageListAdapter类:

`public class ImageListAdapter extends ArrayAdapter {

    LinearLayout linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout11);

    int imgViewCounter=0;
    for(int i=0; i<imageViews; i++) {
        LinearLayout.LayoutParams param= new LinearLayout.LayoutParams( 0, LayoutParams.MATCH_PARENT);
        ImageView image = new ImageView(WelcomeActivity.this);
        image.setId(i+100); param.weight=1;
        image.setLayoutParams(param); 
        image.setBackgroundResource(R.drawable.ic_launcher);
        linearLayout1.addView(image);
    }

}

private void setupListViewAdapter() {
        adapter = new ImageListAdapter(WelcomeActivity.this, R.layout.default_book_view, new ArrayList<ImageRowBean>());
        setContentView(R.layout.grid_view);

}`

1 个答案:

答案 0 :(得分:2)

创建一个ImageView列表,你可以创建ImageViews并设置它们的id,tags和onclicklistenners,并将它们添加到ImageView列表中(我将编写示例,你可以为动态视图设置其他内容):

     imageList = new ArrayList<ImageView>();

        for (int i=0;i<2;i++){
            LinearLayout.LayoutParams param= new LinearLayout.LayoutParams( 0, LayoutParams.MATCH_PARENT);
            ImageView img = new ImageView(WelcomeActivity.this);
            img.setId(i+100); 
            param.weight=1;
            img.setLayoutParams(param); 
            img.setBackgroundResource(R.drawable.ic_launcher);
            img.setOnClickListener(customListenner);
            img.setAnimation(anim);
            img.setTag(i+100);
            linearLayout1.addView(img);
            imageList.add(img);
        }

当您需要再次使用imageview时,只需使用列表中的ID或标签进行调用即可。 (imageList.get(0).getId()

如果您需要不同的听众,您可以使用功能中的唯一标签检查来控制它们,并声明另一个操作。

当我需要以编程方式创建和使用动态视图时,这是我经常使用的方法。