我在Activity中有一个ListView,在ListView中我有另一个Layout,它给列表提供了内容。这是代码
SimpleAdapter adapter = new SimpleAdapter(this.getActivity(),listvalue,
R.layout.singlepost,v,s);
list.setAdapter(adapter);
singlepost是我加载到listView的布局,但是这个单子帖有几个我想要访问的按钮,但是我无法访问按钮,因为它没有加载包含ListView的活动,所以当我尝试访问这样的按钮时
ImageButton star = (ImageButton)findViewById(R.id.star);
它告诉我您尝试访问的视图不在此活动范围内。我知道除了你使用Fragments之外不可能使用两个setContentView(R.layout.activity_main);
。那么如何访问单柱布局中的按钮呢。
注意:当我的意思是Access时,我的意思是点击并让按钮做一些事情,我已经完成了所有必需的声明和实例化,我只需要一种方法来访问该按钮。谢谢。希望我的问题很清楚。
答案 0 :(得分:0)
我很漂亮你必须制作自己的适配器,扩展一些适配器(SimpleAdapter
,ArrayAdapter
,...)。并在getView()
方法中设置任何必要的侦听器:
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
private LayoutInflater inflater;
public MySimpleArrayAdapter(Context context, String[] values) {
super(context, R.layout.row_layout, values);
this.context = context;
this.values = values;
this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = inflater.inflate(R.layout.row_layout, parent, false);
}
Button button = (Button) convertView.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
return convertView;
}
}
编辑或SimpleAdapter
的示例。请注意,我没有尝试过,但理论上我应该相信它。
public class MyAdapter extends SimpleAdapter {
private List list;
public MyAdapter(Context context, List list, int resource, String[] from, int[] to) {
super(context, list, resource, from, to);
this.list = list;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = super.getView(position, convertView, parent);
Button button = (Button) convertView .findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
return convertView;
}
}