0


我有一个 ListView 并且我想要它,这样,当您单击列表中的一个项目时,它会将您带到另一个活动,但带有我单击的变量。

例如,如果我有 item1、item2、item3 我想要它,这样,当我单击 item1 时,它会将我带到另一个活动,并且在该其他活动中,json 提要中 item1 内的所有内容都会显示出来。

到目前为止,这是我的代码:

import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class ChooseTeamActivity extends ListActivity {
    public String FullData = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

    setContentView(R.layout.chooseact);
    final String FullData = getIntent().getStringExtra("FullData");
    Log.v("lc", "chooseActivity:" + FullData);
    try{

   JSONObject obj = new JSONObject(FullData);
   List<String> leagues = new ArrayList<String>();


   JSONObject objData = obj.getJSONObject("data");

   JSONArray jArray = objData.getJSONArray("structure");



   for (int i=0; i < jArray.length(); i++)
   {     JSONObject oneObject = jArray.getJSONObject(i);   

    JSONArray DivisionsArray = oneObject.getJSONArray("divisions");



    for (int d=0; d < DivisionsArray.length(); d++){

        JSONObject DivDict = DivisionsArray.getJSONObject(d);   
        leagues.add(DivDict.getString("name"));
    }

   }
   setListAdapter ( new ArrayAdapter<String>(this, R.layout.single_item, leagues));

   ListView list = getListView();

    list.setTextFilterEnabled(true);


    list.setOnItemClickListener(new OnItemClickListener(){

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                long arg3) {
            // TODO Auto-generated method stub
            //Toast.makeText(getApplicationContext(), ((TextView) arg1).getText(),1000).show();
            Intent nextScreen = new Intent(getApplicationContext(), ChooseTeamActivity.class);
            nextScreen.putExtra("FullData", FullData);
            startActivity(nextScreen);
        }
        });

    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

  }

}
4

4 回答 4

0

保留一个对 DivisionArray 的字段引用,然后重写 onListItemClicked 以获取单击项的索引,然后在 DivisionArray 中查找该项:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

    // TODO: Add code here to look up the item in DivisionArray by index, then use
    // that to launch an activity either with the index or the JSON structure as an extra
}

获得索引后,您可以使用索引或 JSON 结构启动活动:

    Intent intent = new Intent(this, MyActivity.class);
    intent.putExtra("selectedItem", /* TODO: use the index to the item or the JSON structure itself here */);
    startActivity(intent);
于 2012-05-04T10:49:08.023 回答
0

覆盖点击事件处理程序:

@Override
protected void onListItemClick (ListView l, View v, int position, long id) { 

}

并在那里添加代码以使用参数触发您的活动(例如,您的 json 内容,或获取它的方法)

Intent intent = new Intent(this, DetailedActivity.class);
//leagues.get(position);
//or just use the position:
foo.putExtra("itemIndex", position);
//foo.putExtra("fullData", FullData); //or just the part you want
startActivity(foo);
于 2012-05-04T10:49:36.680 回答
0

您可以使用该setOnItemClickListener()方法并使用意图来传递要在列表中显示的数据的字符串,如下所示

list.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                     int position, long id) {
                          Bundle b = new Bundle();
                          b.putString("itemData",data[poition]);
                          Intent intent = new Intent(Activity1.this,Activity2.class);
                          intent.putExtras(b);
                          startActivity(intent);
            }
        });

这里的 data[] 是一个字符串数组,其中包含要从 Activity1 传递到 Activity2 的数据。活动 1 是当前活动,您也可以修复活动 2,只需使用不同的数据填充它。

于 2012-05-04T10:50:41.017 回答
0

使用此代码。

    yourListView.setOnItemClickListener(new OnItemClickListener() 
    {
        public void onItemClick(AdapterView<?> arg0, View arg1, final int position, long arg3) 
        {


            Intent intent = new Intent(YourActivity.this, NotesActivity.class);
            intent.putExtra("Date", "Item To Pass In Ur Activity");
            startActivity(intent);
        }
    });

在您的活动上编写以下代码以获取列表视图传递的项目

String selectedDate = getIntent().getStringExtra("Date");
于 2012-05-04T11:08:11.023 回答