2014-07-18 2 views
-1

오류 줄에 표시되는 내용은 다음과 같습니다.
-이 줄의 여러 표식
- ArrayAdapter는 원시 형식입니다. 생성자 ArrayAdapter와 (RetrieveActivity.MyAsyncTask은, INT, ArrayList를) 인 정의되지 않은
난 내 코드에 어떤 문제가 있는지 알 수 있습니다 - 제네릭 형식 ArrayAdapter와에
-References는 가
파라미터해야합니다. arraylist를 listview에 표시하고 싶습니다. 하지만 난 그 오류로 인해 만들 수 없습니다. TQArrayAdapter 일반 오류

package com.example.m2mai; 

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.sql.Timestamp; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Date; 

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

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.ListView; 
import android.widget.Toast; 


public class RetrieveActivity extends Activity { 
    ArrayAdapter mArrayAdapter; 
    ArrayList mNameList = new ArrayList(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_retrieve); 
    } 



    public void getStream(View v) 
    { 
     new MyAsyncTask().execute(); 
    } 

private class MyAsyncTask extends AsyncTask<String, Void, String> 
{ 
    public ArrayList<String> atList=new ArrayList<String>(); 
    public ArrayList<String> dataList=new ArrayList<String>(); 


     protected String doInBackground(String... params) 
     { 
      return getData(); 

     } 
     public long getDateTo() 
     { 
     EditText toText = (EditText)findViewById(R.id.dateTo); 
     String To = toText.getText().toString(); 

     DateFormat dateFormatTo = new SimpleDateFormat("dd/MM/yyyy"); 
     Date dateTo = null; 
     try { 
      dateTo = dateFormatTo.parse(To); 
     } catch (java.text.ParseException e) { 
      e.printStackTrace(); 
     } 
     long timeTo = dateTo.getTime(); 
     new Timestamp(timeTo); 
     return timeTo/1000; 
     } 

     protected String getData() 
     { 
      String toTS = ""+getDateTo(); 
      String decodedString=""; 
      String returnMsg=""; 
      String request = "http://api.carriots.com/devices/[email protected]/streams/?order=-1&max=5&at_to="+toTS; 
      URL url; 
      HttpURLConnection connection = null; 
      try { 
       url = new URL(request); 
       connection = (HttpURLConnection) url.openConnection(); 
       //establish the parameters for the http post request 
       connection.addRequestProperty("carriots.apikey", "===================="); 
       connection.addRequestProperty("Content-Type", "application/json"); 
       connection.setRequestMethod("GET"); 
       //create a buffered reader to interpret the incoming message from the carriots system 
       BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream())); 
       while ((decodedString = in.readLine()) != null) 
       { 
        returnMsg+=decodedString; 
       } 
       in.close(); 
       connection.disconnect(); 
       JSONObject nodeRoot = new JSONObject(returnMsg); 
       JSONArray res = nodeRoot.getJSONArray("result"); 

       for (int i = 0; i < res.length(); i++) 
        { 
        JSONObject childJSON = res.getJSONObject(i); 
        if (childJSON.get("data")!=null) 
         { 
         String value = childJSON.getString("data"); 
         dataList.add(value); 
         JSONObject node=new JSONObject(value); 
         atList.add(node.get("temperature").toString()); 
         } 
        } 
       } 
       catch (Exception e) 
      { 
       e.printStackTrace(); 
       returnMsg=""+e; 
      } 
      //Log.d("returnMsg",returnMsg.toString()); 
      return returnMsg; 
     } 

     protected void onPostExecute(String result) 
      { 

//   int a = atList.size(); 
//   String b = ""+a; 
//   Log.d("atList",b); 
      for(int i = 0; i < atList.size(); i++) 
      { 
      ListView mainListView = (ListView) findViewById(R.id.listView1); 

      // Create an ArrayAdapter for the ListView 
      mArrayAdapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,mNameList); //<---- error here 

      // Set the ListView to use the ArrayAdapter 
      mainListView.setAdapter(mArrayAdapter); 

      mNameList.add(atList.get(i).toString()); 
      mArrayAdapter.notifyDataSetChanged(); 
      } 
      Toast.makeText(getApplicationContext(),result, Toast.LENGTH_LONG).show(); 
      EditText myData1=(EditText)findViewById(R.id.editText1); 
      myData1.setText(atList.get(0)); 

      } 
    } 

} 
+0

''mArrayAdapter = new ArrayAdapter (this, android.R.layout.simple_list_item_1, mNameList); '에서 RetrieveActivity.this'로 변경하십시오' – Apoorv

답변

0

또한

ArrayList<String> mNameList = new ArrayList<String>(); 
에 ArrayList의 정의를 변경이

ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(RetrieveActivity.this,android.R.layout.simple_list_item_1,mNameList); 

같은 경고를 제거하기 위해 배열 어댑터의 유형에 대한 매개 변수를 지정 지정

+0

도움을 많이 주셔서 감사합니다 ... 그것은 내 문제를 해결합니다. 하지만 내가 다시 검색을 누르면 목록이 계속 확장된다는 것을 알 수 있습니까? 목록을 갱신 할 수 있습니까? –

+0

Tq 나는 그것을 할 길을 찾았습니다. arraylist 선언을 asyntask 영역으로 옮깁니다. t32 –

+0

'List mNameList = new ArrayList ();'더 나은 방법 – EpicPandaForce

1

ArrayAdapter와 원시 유형입니다.

어댑터가 처리 할 개체 유형을 제공 할 것으로 예상됩니다. 예,

ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(... 

생성자 ArrayAdapter와 (RetrieveActivity.MyAsyncTask, INT, ArrayList에) 들어

생성자의 첫 번째 인수는 Context 객체와 아닌 AsyncTask를 인스턴스 (인 이 경우 귀하의 경우를 말합니다)

ArrayAdapter<String> mAdapter = new ArrayAdapter<String>(NameOfYoutActivity.this, ... 

onPostExecute에서 귀하의 어댑터 인스턴스입니다. 나는이 유용하지 않습니다 생각 또한

@Override 
protected void onPostExecute(String result) { 

     ListView mainListView = (ListView) findViewById(R.id.listView1); 
     mArrayAdapter = new ArrayAdapterString> (NameOfYoutActivity.this, android.R.layout.simple_list_item_1,mNameList); 

     for(int i = 0; i < atList.size(); i++) { 
      mArrayAdapter.add(atList.get(i).toString());     
     } 
     Toast.makeText(getApplicationContext(),result, Toast.LENGTH_LONG).show(); 
     EditText myData1=(EditText)findViewById(R.id.editText1); 
     myData1.setText(atList.get(0)); 

} 
+0

tq 너무 많이 도움이됩니다. 내 어댑터의 여러 인스턴스? 그게 무슨 뜻이야? 미안 해요, 안드로이드에 멍청한 새끼예요. –

0
// "this" is not application context. 
mArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, mNameList); 

onCreate() 방법으로 UI를 만들고을 사용할 수 있습니다.3210 업데이트.