android发送意图额外

时间:2012-04-15 11:43:28

标签: java android listview android-intent

App读取JSON数据。然后它会把它放到列表视图(正确),但在按下一个项目后,我将始终得到相同的值显示。在我认为是问题的代码下面,但我找不到。

try{
    JSONArray jArray = new JSONArray(result);
    for(int ii=0;ii<jArray.length();ii++){
            JSONObject json_data = jArray.getJSONObject(ii);
            courseName = json_data.getString("fullname");

            HashMap<String,String> map = new HashMap<String, String>();
            map.put("fullname", courseName);
            myCoursesList.add(map);
    }
} catch(JSONException e){
    Log.e("log_tag", "Error parsing data "+e.toString());
}
ListAdapter adapter = new SimpleAdapter(this, myCoursesList,R.layout.my_courses_layout,
        new String[] {"fullname"}, new int[] { R.id.course});

setListAdapter(adapter);
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener(){
    public void onItemClick(AdapterView<?> parent, View view, int position, long id){
        String fn = ((TextView)findViewById(R.id.course)).getText().toString();

        Intent in = new Intent(getApplicationContext(), courseActivity.class);
        in.putExtra("fullname", fn);
        startActivity(in);
    }
});

3 个答案:

答案 0 :(得分:1)

改变这个:

String fn = ((TextView)findViewById(R.id.course)).getText().toString();

对此:

String fn = ((TextView)view.findViewById(R.id.course)).getText().toString();

答案 1 :(得分:1)

我是一个普通的适配器/列表视图,我想你会想做这样的事情。

public void onItemClick(AdapterView<?> parent, View view, int position, long id){
     String fn = adapter.get(position);
     Intent in = new Intent(getApplicationContext(), courseActivity.class);
     in.putExtra("fullname", fn);
     startActivity(in);      
}

答案 2 :(得分:0)

尝试

String fn = ((TextView)view.findViewById(R.id.course)).getText().toString();

而不是

String fn = ((TextView)findViewById(R.id.course)).getText().toString();