안드로이드 위젯에서 리스트는 구현햇지만 각각의 리스트 아이템을 클릭하면 그에 해당하는 이벤트를 주고 싶은데 액티비티가 아닌 위젯에 이벤트를 주려고 하니 어떻게 해야할지 검색해도 나오지 않네요 ㅠㅠ 조언부탁드립니다.
안드로이드 초보라서 자세히 설명해주시면 감사드려요 ㅠㅠ
예제 소스를 작성 해주신다면 더 감사드려요 ㅠㅠ
일단 위젯에 리스트 부착까지 한 소스 올릴게요 .. 꼭 답변좀 해주세요..ㅠ
import java.util.Vector;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.RemoteViews;
import android.widget.RemoteViewsService;
import com.everysoft.autoanswer.R;
public class AnnivListWidget extends AppWidgetProvider {
public AnnivListWidget() {
}
public void onDeleted(Context context) {
}
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int i = 0;i<appWidgetIds.length;i++) {
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.annivlistwidget);
Intent intent = new Intent(context, AnnivListWidgetService.class);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
rv.setRemoteAdapter(R.id.annivlist, intent);
rv.setEmptyView(R.id.annivlist, R.id.emptyview);
appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
public static class AnnivListWidgetService extends RemoteViewsService {
public RemoteViewsFactory onGetViewFactory(Intent intent) {
return new AnnivListFactory(this.getApplicationContext(), intent);
}
}
}
class AnnivListFactory implements RemoteViewsService.RemoteViewsFactory {
Context mContext;
int mAppWidgetId;
Vector<String> data = new Vector<String>();
Vector<String> link = new Vector<String>();
public AnnivListFactory(Context context, Intent intent) {
mContext = context;
mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
Log.v("핸들러", "업데이트");
listUpdate();
}
private void listUpdate() {
// TODO Auto-generated method stub
onDataSetChanged();
}
};
public void onCreate() {
wp.open();
}
public void onDestroy() {
}
public int getCount() {
return data.size();
}
public long getItemId(int position) {
return position;
}
public int getViewTypeCount() {
return 1;
}
public RemoteViews getLoadingView() {
return null;
}
public RemoteViews getViewAt(int position) {
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.annivlistwidgetitem);
rv.setTextViewText(R.id.annivtext, data.get(position));
// Intent intent = new Intent();
// Bundle extras = new Bundle();
//
// extras.putString("word",data.get(position));
// intent.putExtras(extras);
// rv.setOnClickFillInIntent(android.R.id.text1, intent);
//
// String intentlink = link.get(position);
// Uri uri = Uri.parse(intentlink);
// Intent it = new Intent(Intent.ACTION_VIEW,uri);
// it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// mContext.startActivity(it);
return rv;
}
public boolean hasStableIds() {
return true;
}
public void onDataSetChanged() {
}
}