2013-08-17 64 views
0

我终于让我的onListItemClick正常工作,但现在好像我设置为传递到下一个活动的数据没有经过但活动仍然开始。我的应用程序不会崩溃或任何它只是加载的活动,但我已设置的数据似乎并没有在那里。我试图删除滚动视图,但数据似乎仍然没有通过。未将数据从列表视图传递到活动

public class ListView extends ListActivity {  

    ArrayList<HashMap<String, String>> questionList;   

    final String TAG_RESULTS = "results"; 
    final String TAG_QUESTION_SUBJECT = "Subject"; 
    final String TAG_QUESTION_NUMANSWERS = "NumAnswers"; 
    final String TAG_QUESTION = "question"; 
    final String TAG_QUESTION_CONTENT = "Content"; 
    final String TAG_QUESTION_CHOSENANSWER = "ChosenAnswer"; 
    final String TAG_ANSWERS = "Answers"; 
    final String TAG_ANSWER = "Answer";  
    final String TAG_ANSWERS_CONTENT = "content";  
    final String TAG_QUERY = "query"; 

      JSONArray question = null;   
      android.widget.ListView lv; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.listview);   
     questionList = new ArrayList<HashMap<String, String>>(); 
     new LoadAllData().execute(); 
    } 

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

     String Subject = ((TextView) v.findViewById(R.id.Subject)).getText().toString(); 
     String Content = ((TextView) v.findViewById(R.id.Content)).getText().toString(); 
     String ChosenAnswer = ((TextView) v.findViewById(R.id.ChosenAnswer)).getText().toString(); 


     Intent i = new Intent(ListView.this, SingleListItem.class); 
     i.putExtra(TAG_QUESTION_SUBJECT, Subject); 
     i.putExtra(TAG_QUESTION_CONTENT, Content); 
     i.putExtra(TAG_QUESTION_CHOSENANSWER, ChosenAnswer); 
     startActivity(i); 

      }  


    class LoadAllData extends AsyncTask<String, String, String> { 


     private Dialog pDialog; 
     @Override 
      protected void onPreExecute() { 
      super.onPreExecute(); 
      ProgressDialog pDialog; 
      pDialog = new ProgressDialog(ListView.this); 
      pDialog.setMessage("Loading Data. Please wait..."); 
      pDialog.setIndeterminate(false); 
      pDialog.setCancelable(false); 
      pDialog.show(); 
      if (pDialog != null && pDialog.isShowing()) pDialog.dismiss(); 
     } 

     protected String doInBackground(String... args) { 

      try { 
       Intent in = getIntent(); 
       String searchTerm = in.getStringExtra("TAG_SEARCH"); 
       String query = URLEncoder.encode(searchTerm, "utf-8"); 
       String URL = "http://example.com"; 
       JSONParsser jParser = new JSONParsser(); 
       JSONObject json = jParser.readJSONFeed(URL); 
       try { 
        //question = json.getJSONArray(TAG_QUESTION); 


        JSONArray questions = json.getJSONObject("all").getJSONArray("questions"); 

        for(int i = 0; i < questions.length(); i++) { 
         JSONObject question = questions.getJSONObject(i); 


        String Subject = question.getString(TAG_QUESTION_SUBJECT); 
        String NumAnswers = question.getString(TAG_QUESTION_NUMANSWERS); 
        String ChosenAnswer = question.getString(TAG_QUESTION_CHOSENANSWER); 
        String Content = question.getString(TAG_QUESTION_CONTENT); 

        //JSONArray Answers = question.getJSONObject(TAG_ANSWERS).getJSONArray(TAG_ANSWER); 


        //JSONObject Answer = Answers.getJSONObject(0); 

        //String Content = Answer.getString(TAG_ANSWERS_CONTENT); 

           HashMap<String, String> map = new HashMap<String, String>(); 

           map.put(TAG_QUESTION_SUBJECT, Subject); 
           map.put(TAG_QUESTION_NUMANSWERS, NumAnswers); 
           map.put(TAG_QUESTION_CONTENT, Content); 
           map.put(TAG_QUESTION_CHOSENANSWER, ChosenAnswer); 

           questionList.add(map); 


        } 


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

       return TAG_QUESTION ; 



     } 
     @Override 
     protected void onPostExecute(String file_URL) { 
      ListAdapter adapter = new SimpleAdapter(getBaseContext(), questionList, 
         R.layout.listelements, 
         new String[] { TAG_QUESTION_SUBJECT, TAG_QUESTION_NUMANSWERS }, new int[] { 
         R.id.Subject, R.id.NumAnswers }); 

       setListAdapter(adapter); 


     }}} 

SingleListItem活动:

public class SingleListItem extends Activity { 

    TextView title; 
    TextView question; 
    TextView bestanswer; 
    TextView subject; 
    TextView content; 
    TextView chosenanswer; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.setContentView(R.layout.singlelistitem); 

    title = (TextView) findViewById(R.id.Title1); 
    question = (TextView) findViewById(R.id.Question1); 
    bestanswer = (TextView) findViewById(R.id.BestAnswer1); 
    subject = (TextView) findViewById(R.id.Subject1); 
    content = (TextView) findViewById(R.id.Content1); 
    chosenanswer = (TextView) findViewById(R.id.ChosenAnswer1); 

    Intent i = getIntent(); 
    String Subject = i.getStringExtra("TAG_QUESTION_SUBJECT"); 
    String Content = i.getStringExtra("TAG_QUESTION_CONTENT"); 
    String ChosenAnswer = i.getStringExtra("TAG_QUESTION_CHOSENANSWER"); 
    subject.setText(Subject); 
    content.setText(Content); 
    chosenanswer.setText(ChosenAnswer); 

    } 
} 

singlelistitem.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/Title1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Title:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/Subject1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.00" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <TextView 
     android:id="@+id/Question1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Question:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/Content1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.01" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <ScrollView 
     android:id="@+id/scrollView1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 
    </ScrollView> 

    <TextView 
     android:id="@+id/BestAnswer1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Best Answer:" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

    <TextView 
     android:id="@+id/ChosenAnswer1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.01" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

</LinearLayout> 
+0

你的钥匙不一样 – Raghunandan

回答

0

你的钥匙是不一样的。

你有这样的

i.putExtra(TAG_QUESTION_SUBJECT, Subject); 

TAG_QUESTION_SUBJECT是 “主题”

final String TAG_QUESTION_SUBJECT = "Subject"; 

的GET部分

String Subject = i.getStringExtra("TAG_QUESTION_SUBJECT"); // keys do not match 
// must be "Subject" 

将其更改为以下。密钥必须匹配

String Subject = i.getStringExtra("Subject"); 
String Content = i.getStringExtra("Content"); 
String ChosenAnswer = i.getStringExtra("ChosenAnswer"); 
+0

感谢您的全力帮助我应该亲眼看到这个。非常感谢! –

+0

你是否可以通过'TAG_QUESTION_CHOSENANSWER =“ChosenAnswer”;'和String TAG_QUESTION_CONTENT =“Content”;'没有将这些字符串填充到我的列表视图中。我问这个的原因是因为当我点击这个项目时,我希望显示在其他活动中的唯一字符串是String TAG_QUESTION_SUBJECT =“Subject”;这是因为'Subject'是我想要传递的唯一字符串已经填充到列表视图中。那两个其他字符串包含我只需要知道如何传递它们而不必将它们填充到列表视图中的数据。 –

+0

@BobLast你可以传递值而不用在listview中填充。你的散列表的数据只是使用相同的,并使用意图传递值 – Raghunandan

0

您应该使用same keys发送和接收。您的sending activity doesn't match with the keys中的部分密钥正在接收活动。

发送:

map.put("Question", Subject); 
map.put("NumAnswer", NumAnswers); 
map.put("content", Content); 
map.put("chosenAnswer", ChosenAnswer); 

用于接收:

String Subject = question.getString("Question"); 
String NumAnswers = question.getString("NumAnswer"); 
String ChosenAnswer = question.getString("chosenAnswer"); 
String Content = question.getString("content"); 
0

看起来你已经命名的额外内容,例如,在你的列表视图活动 “主题”,然后引用它们在单项活动中有所不同:

String Subject = i.getStringExtra("TAG_QUESTION_SUBJECT"); 

可能会考虑到这一点。