2016-04-12 13 views
0

私はアンドロイド開発で新しく、私は自分のコードで少し助けが必要です。クラスからのAsyncTaskを主なアクティビティに使用する必要があります。そして、それを主な機能でどのようにアピールするのですか?クラスからMainActivityへのAsyncTaskのアピール

私の主な活動:

public class ListActivity extends Activity implements OnItemClickListener { 
ArrayList<Person> lista; 
ProgressDialog progress; 
private ListView lv; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_lista); 
    lv = (ListView) findViewById(R.id.list); 
    lv.setOnItemClickListener(this); 

    new DataReturn().onPostExecute("random ip"); 

} 

@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    Person p = (Person) arg0.getItemAtPosition(arg2); 
    new AlertDialog.Builder(ListActivity.this).setTitle("Information").setMessage(p.getLastName()).setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        dialog.dismiss(); 
       } 
      }).setIcon(android.R.drawable.ic_dialog_alert).show(); 

} 

そして、私のAsyncTaskのコードは次のとおりです。

public class DataReturn extends AsyncTask<String,Void,String> { 
ArrayList<Person> rlist; 
Dialog progress; 
ListView rlv; 
Context context; 
@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    ProgressDialog progress = new ProgressDialog(null); 
    progress.setCancelable(false); 
    progress.setMessage("Loading..."); 
    progress.setTitle("Loading"); 
    progress.show(); 
} 

protected String doInBackground(String... arg0) { 
    return Utils.httpGetFromUrl(arg0[0]); 
} 

protected void onPostExecute(String result) { 
    ArrayList<Person> rlist = Utils.parseJson(result); 
    // ArrayAdapter<String> arrayAdapter = new 
    // ArrayAdapter<String>(ListActivity.this, 
    // android.R.layout.simple_list_item_1); 
    ArrayAdapter<Person> adapter = new ClassAdapter(context, rlist); 
    rlv.setAdapter(adapter);  
    progress.dismiss(); 
} 
+1

を? – Eenvincible

答えて

1

あなたは新しいクラスを持っているなら、あなたはこれをやっている方法が間違っています。それがMainactivityの内部クラスなら、それは正しいことでした。

//Asuming there is no parameters in the constructor but context other wise 
//delete MainActivity.this 

    DataReturn dataReturn = new DataReturn(MainActivity.this); 
    dataReturn.execute(your random ip); 
+0

新しいDataReturn()のようにランダムに行うことができます。execute( "ip"); –

+1

私は彼が彼はアンドロイドの初心者だと言った彼の記事を読むので、私は彼がクラスのオブジェクトを使用することができるように、彼は彼がJava(OOP)の方法で理解できるように彼にして欲しい –

+0

素晴らしい........... .....この答えは完全に質問に合っています:) –

1

試してみてくださいあなたは "魅力" とはどういう意味ですか

new DataReturn().execute("your random ip"); 
関連する問題