如何在android中访问listView中的布局
我在一个活动中有一个ListView,在该ListView中我有另一个布局,它给出了列表的内容。这是密码如何在android中访问listView中的布局,android,listview,android-listview,Android,Listview,Android Listview,我在一个活动中有一个ListView,在该ListView中我有另一个布局,它给出了列表的内容。这是密码 SimpleAdapter adapter = new SimpleAdapter(this.getActivity(),listvalue, R.layout.singlepost,v,s); list.setAdapter(adapter); singlepos
SimpleAdapter adapter = new SimpleAdapter(this.getActivity(),listvalue,
R.layout.singlepost,v,s);
list.setAdapter(adapter);
singlepost是我加载到listView的布局,但是这个singlepost有几个按钮我想访问,但是我无法访问这些按钮,因为它没有加载包含listView的活动,所以当我尝试像这样访问按钮时
ImageButton star = (ImageButton)findViewById(R.id.star);
它告诉我您尝试访问的视图不在此活动中。我知道不可能使用两个setContentView(R.layout.activity\u main)代码>除非您使用片段。那么如何访问singlepost布局中的按钮呢
注意:当我指的是访问时,我指的是单击并让按钮做一些事情,我已经完成了所有必要的声明和实例化,我需要的只是访问该按钮的一种方式。谢谢希望我的问题足够清楚。我很高兴您必须制作自己的适配器来扩展某些适配器(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;
}
}
那么,我是否需要取出初始的SimplePatter声明并替换为这个新类?是的,但是如果像本例中那样扩展ArrayAdapter
,您还必须设置所有的TextView
s。@daviestobialex或参见编辑以获取SimpleAdapter
@daviestobialex的示例。@daviestobialex是的,很抱歉,您没有想到会说convertView.findViewById();哪一个例子给出了NPE?
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;
}
}