Java 从getItem()生成对象并访问字段

Java 从getItem()生成对象并访问字段,java,android,Java,Android,我的代码中有一个列表视图,包含2个按钮和2个文本视图。我想通过单击按钮访问每个文本视图的文本。下面是适配器的代码 public class TracksAdapter extends SimpleAdapter { public TracksAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {

我的代码中有一个列表视图,包含2个按钮和2个文本视图。我想通过单击按钮访问每个文本视图的文本。下面是适配器的代码

public class TracksAdapter extends SimpleAdapter {
    public TracksAdapter(Context context, List<? extends Map<String, ?>> data, int      resource, String[] from, int[] to) {
        super(context, data, resource, from, to);
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        final TracksAdapter proxy = this;
        final View trackView = super.getView(position, convertView, parent);

        Button dl = (Button) trackView.findViewById(R.id.dl);
        dl.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Do something with data : proxy.getItem(position)
                TextView tv = (TextView) trackView.findViewById(R.id.track);
                String track = tv.getText().toString();
                Toast.makeText(getApplicationContext() , track , Toast.LENGTH_LONG);
            }
        });

        Button play = (Button) trackView.findViewById(R.id.play);
        play.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Do something with data : proxy.getItem(position)
                Toast.makeText(getApplicationContext() , String.valueOf(proxy.getItem(position)).indexOf("file=") , Toast.LENGTH_LONG);
            }
        });

        return trackView;
    }
}
公共类TracksAdapter扩展了simpledapter{
公共跟踪适配器(上下文,列表>数据,int资源,字符串[]从,int[]到){
超级(上下文、数据、资源、从、到);
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
最终轨迹捕捉器代理=此;
最终视图trackView=super.getView(位置、转换视图、父级);
Button dl=(Button)trackView.findViewById(R.id.dl);
dl.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//处理数据:proxy.getItem(position)
TextView tv=(TextView)trackView.findviewbyd(R.id.track);
String track=tv.getText().toString();
Toast.makeText(getApplicationContext(),track,Toast.LENGTH\u LONG);
}
});
按钮播放=(按钮)trackView.findviewbyd(R.id.play);
play.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//处理数据:proxy.getItem(position)
Toast.makeText(getApplicationContext(),String.valueOf(proxy.getItem(position)).indexOf(“file=”),Toast.LENGTH\u LONG);
}
});
返回轨迹视图;
}
}
proxy.getItem(position)
的结果类似于
{id=4,name=foo,track=fofoo}


我应该如何访问“foo”?

尝试他的代码从onClick获取文本:

TextView tv = (TextView) parent.findViewById(R.id.your_textView_position_id_from_xml);
String s = tv.getText().toString();

proxy.getItem(position).name
我已经尝试过了,但是没有指定名称。不正确。您指的是
iosched
的TracksAdapter吗?如果是,则该类中没有名为
name
的字段。请参考其API。如果它是你自己的类,发布它的代码。我编辑了代码。它扩展了SimpleAdapter,必须检查对象实例的类型,然后将其强制转换为要检索数据的类。然后你就可以访问myobject.name了。它并不是对所有的按钮都有效!我最后不得不解析这个字符串({id=4,name=foo,track=fofoo}),以获得name的值!