簡単な質問です。タスクが生成されたアクティビティとは異なるアクティビティで、非同期タスクからリスト ビューを更新しようとしています。私の質問は、他のアクティビティでアダプタを更新することに関するものです。他のアクティビティ アダプタにアクセスして (adapter.add(item); を使用して) アダプタに追加し、アダプタに変更を通知してリストを更新するにはどうすればよいですか?他のアクティビティ (adapter.notifyChange();) ?
接続タスクは次のとおりです。
public class ConnectionTask extends AsyncTask<Context, String, Void> {
private String mText;
private Context mContext;
private int NOTIFICATION_ID = 1;
private Notification mNotification;
private NotificationManager mNotificationManager;
@SuppressWarnings("unused")
private NotificationActivity noteact = new NotificationActivity();
public ConnectionTask(Context context){
this.mContext = context;
//Get the notification manager
mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
}
@Override
protected void onPreExecute() {
Log.i("PushNote", "onPreExecute");
}
public void setmText(String mText){
this.mText = mText;
}
public String getmText(){
return mText;
}
@Override
protected Void doInBackground(Context... params) {
Socket clientSocket = null;
//Creates the is connected boolean and sets it to false
boolean connected = false;
String ipaddr = getmText();
// define a writer and a reader, so that we can interact with the
// Server
BufferedReader inFromServer = null;
InetAddress addr = null;
try {
addr = InetAddress.getByName(ipaddr);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
publishProgress(e1.toString());
e1.printStackTrace();
}
// Dynamically find IP of current Localhost
String HostName = addr.getHostName();
int port = 6789;
try {
// Lets try and instantiate our client and define a port number.
clientSocket = new Socket(HostName, port);
// once the client is connected sets the isConnected boolean to true
connected = true;
// lets also link the writer and reader to the client.
inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
// make sure to always catch any exceptions that may occur.
} catch (UnknownHostException e) {
// always print error to "System.err"
publishProgress(e.toString());
// 2 different types of exceptions, so we want to output meaning
// information for both.
} catch (IOException e) {
publishProgress(e.toString());
}
// Boolean which indicates if the client is connected or not,
// if connected it takes in the next line of user input and returns the servers response.
while (connected) {
// Send the user message to the server
// read the reply from the server
String reply = null;
try {
reply = inFromServer.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
publishProgress("Failed to connect." );
System.exit(1);
}
if (reply != null){
// output the reply as a notification
if (isCancelled()){
break;
}
publishProgress(reply);
} else {
try {
inFromServer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
publishProgress(e.toString());
System.exit(1);
} // the reader
try {
clientSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
publishProgress(e.toString());
System.exit(1);
} // and the client socket
}
}
// always remember to close all connections.
// TODO Auto-generated method stub
return null;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
protected void onProgressUpdate(String... item) {
Notification("Push2Note: ", item[0]);
}
public void Notification(String contentTitle, String contentText) {
//Build the notification using Notification.Builder
long[] vibrate = {0,100,200,300};
PendingIntent pendingIntent;
Intent intent = new Intent();
intent.setClass(mContext,NotificationActivity.class);
pendingIntent = PendingIntent.getActivity(mContext, 0, intent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext)
.setSmallIcon(android.R.drawable.presence_online)
.setAutoCancel(true)
.setVibrate(vibrate)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setContentIntent(pendingIntent)
.setContentTitle(contentTitle)
.setContentText(contentText);
//Get current notification
mNotification = builder.getNotification();
//Show the notification
mNotificationManager.notify(NOTIFICATION_ID, mNotification);
}
}
これが入力しようとしているアクティビティです:
public class NotificationActivity は ListActivity を拡張します {
/** Called when the activity is first created. */
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.notifications);
setListAdapter(new ArrayAdapter(this,
android.R.layout.simple_list_item_checked, new ArrayList()));
}
}
同様の質問を読んで、グローバルアダプターの使用について聞いたことがありますが、そのようなことをどのように実装できるかわかりません。
これは、私のアプリケーションで謎のままであるパズルの最後のピースであり、問題に関する助けがあれば大歓迎です.
御時間ありがとうございます、
ではごきげんよう。