我在[{1}}的{{1}} linear Layout
中使用了imageViews
(有些ListView
}。使用静态adapter
一切正常。但是,当我创建动态layout
时,我无法通过调用imageView
从getView(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);
}`
答案 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()
)
如果您需要不同的听众,您可以使用功能中的唯一标签检查来控制它们,并声明另一个操作。
当我需要以编程方式创建和使用动态视图时,这是我经常使用的方法。