如何在android中访问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

我在一个活动中有一个ListView,在该ListView中我有另一个布局,它给出了列表的内容。这是密码

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;
    }
}