如何在自定义BaseAdapter中使用intent

时间:2014-02-07 07:15:47

标签: android listview android-intent

我有2项活动 - MainActivity& ListresultActivity。在ListresultActivity中,我使用了listView的自定义适配器。但是对于列表中的每一行,我都有一个按钮,我想用它来使用intent返回MainActivity。我如何在onclick中使用setResult(RESULT_OK,intnt)和finish()?

这是代码: 的 MainActivity:

int request_code = 1
public void onActivityResult(int requestCode, int resultCode, Intent data)     
{         
    if (requestCode == request_code) 
    {  if (resultCode == RESULT_OK) 
       { //Toast. makeText(this,data.getData().toString(),  Toast.LENGTH_SHORT).show();
        Student aStu = (Student)data.getSerializableExtra("studentObj");

       }        
    }    
}

ListResultActivity (第二个活动,我使用的是listview和我自己的sipleBaseAdapter自定义类):

protected void onCreate(Bundle savedInstanceState) 
{
 SimpleBaseAdapter datatHolder = new SimpleBaseAdapter(this, studentList);
 myList.setAdapter(datatHolder);
}

SimpleBaseAdapter类(baseAdapter的自定义类):

public class SimpleBaseAdapter extends BaseAdapter 
{  @Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = (LayoutInflater) adapterContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    View rowView = inflater.inflate(R.layout.adapter_listrowitem, parent, false);

    Button btnBack = (Button) rowView.findViewById(R.id.listRw_btnBk);
    final  Student student = studentDataHolder.get(position);
    if (student != null) {

      btnBack.setOnClickListener(new OnClickListener() {

  public void onClick(View v) {
// TODO Auto-generated method stub

Intent intnt = new Intent(adapterContext,MainActivity.class);
intnt.putExtra("studentObj", student);
//setResult(RESULT_OK, intnt);
//ListResultActivity.this.finish();
}
});
    }
    return rowView;

}

1 个答案:

答案 0 :(得分:4)

您可以使用setResult与现在相同的方式,但对于完成活动,请使用以下行: -

((Activity)adapterContext).finish();

在这里,我假设adapterContext是您为Context传递的ListresultActivity已为其设置了适配器。