从活动中的列表视图返回数据

时间:2013-09-18 00:06:26

标签: android listview

从开始活动

Intent intent = new Intent(StartActivity.this, MarkersActivity.class);
startActivityForResult(intent, GoMarkerReturn);  

调用其他活动,其中有CustomListAdapter扩展BaseAdapter。 列表视图在单击时会显示一张图片,以关闭当前活动并将结果返回到开始活动

public class CustomListAdapter extends BaseAdapter {
...
    public View getView(int position, View convertView, ViewGroup parent) {
        holder.imggo.setOnClickListener(new View.OnClickListener() {
            ...
            @Override
            public void onClick(View v) {
            int clickedPosition = (Integer)v.getTag();
            NewsItem newsItem = (NewsItem)listData.get(clickedPosition);                
            Long goID = newsItem.getID();

            Intent myIntent = new Intent(v.getContext(), StartActivity.class);
            myIntent.putExtra("goID", goID);
            setResult(0, myIntent);

setResult(0,myIntent)不起作用!

2 个答案:

答案 0 :(得分:1)

StartActivityForResultsetResult用于在活动之间传递值。在这种情况下,您需要在第二个活动中调用finish(),以便第二个活动被销毁,第一个活动到达前台。

这是一个很好的教程,可以了解它的功能。 DataTransfers

答案 1 :(得分:0)

public class CustomListAdapter extends BaseAdapter {
...
    public View getView(int position, View convertView, ViewGroup parent) {
    ...
        holder.imggo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent myIntent = new Intent(v.getContext(), StartActivity.class);
                myIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                myIntent.putExtra("goID", goID);
                v.getContext().startActivity(myIntent);

public class StartActivity extends Activity{
...
    @Override
    protected void onResume() {
        Intent intent = getIntent();
        Long goID = intent.getLongExtra("goID", 0);
        if (goID > 0){
               ...