Android小部件使用putextra启动新活动

Android小部件使用putextra启动新活动,android,json,android-appwidget,Android,Json,Android Appwidget,我正在使用JSON。我编写了可以加载JSON(图像和文本)并在ListView中显示数据的代码。(在ListView中,我启动新活动) 我还编写了一个appwidget(stackview小部件),我可以在stackview小部件中显示JSON内容,例如,如果我单击第5项,它启动一个新的活动,允许用户阅读第五条新闻。我可以在widget click上启动新活动,但如何根据项目位置启动新的结果活动 这是我的代码: public class MainActivity extends Activity

我正在使用JSON。我编写了可以加载JSON(图像和文本)并在ListView中显示数据的代码。(在ListView中,我启动新活动)

我还编写了一个appwidget(stackview小部件),我可以在stackview小部件中显示JSON内容,例如,如果我单击第5项,它启动一个新的活动,允许用户阅读第五条新闻。我可以在widget click上启动新活动,但如何根据项目位置启动新的结果活动

这是我的代码:

public class MainActivity extends Activity {
public String URL = "*********************";

public static String KEY_title = "title";
public static String KEY_description = "description";
public static String KEY_image = "image";
public static String KEY_journal = "journal";
public static String KEY_JournalID = "JournalID";
public static String KEY_pubDate = "pubDate";
public static String KEY_statID = "statID";
public JSONArray jsonarray;
public ListView list;
public JSONParser jsonparser;
static BRIgeAdapter adapter;

public static ArrayList<HashMap<String, String>> itemList;

public static String dateTime;
private ArrayList<Content> contents = new ArrayList<Content>();

public TransparentProgressDialog pd;
HashMap<String, String> map;

private int screenSize;

public LoadDataAllChanelsToServer loadData;

public TextView journal, tittle, description, smalllink, DateTime,
        smallstatID;

@SuppressLint("CutPasteId")
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    screenSize = getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK;

    itemList = new ArrayList<HashMap<String, String>>();
    list = (ListView) findViewById(R.id.listView1);

    adapter = new BRIgeAdapter(MainActivity.this, itemList, screenSize);

    Thread.setDefaultUncaughtExceptionHandler(new UnCaughtException(this,
            this));
    loadData = new LoadDataAllChanelsToServer();

    pd = new TransparentProgressDialog(this, R.drawable.loader);


    list.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            journal = (TextView) view.findViewById(R.id.smalljournal);

            tittle = (TextView) view.findViewById(R.id.smalltitle);
            description = (TextView) view
                    .findViewById(R.id.smallDescription);
            smalllink = (TextView) view.findViewById(R.id.smalllink);
            DateTime = (TextView) view.findViewById(R.id.smallDateTime);
            smallstatID = (TextView) view.findViewById(R.id.smallstatID);
            String Stringjournal = journal.getText().toString();
            String Stringtittle = tittle.getText().toString();
            String Stringdescription = description.getText().toString();
            String Stringlink = smalllink.getText().toString();
            String StringdateTime = DateTime.getText().toString();
            String StringstatID = smallstatID.getText().toString();

            Intent in = new Intent(MainActivity.this, Result.class);
            in.putExtra("KEY_journal", Stringjournal);
            in.putExtra("KEY_title", Stringtittle);
            in.putExtra("KEY_description", Stringdescription);
            in.putExtra("KEY_link", Stringlink);
            in.putExtra("KEY_pubDate", StringdateTime);
            in.putExtra("KEY_statID", StringstatID);

            String url = itemList.get(position).get(MainActivity.KEY_image);

            if (url.endsWith("-c.jpg"))
                url = url.replace("-c.jpg", ".jpg");
            in.putExtra("Bitmap", url);

            in.putExtra("Bitmap", url);

            startActivity(in);
            overridePendingTransition(R.anim.trans_left_in,
                    R.anim.trans_left_out);

        }
    });

    loadData.execute();

}

private class LoadDataAllChanelsToServer extends
        AsyncTask<String, Integer, String> {

    @Override
    protected void onPreExecute() {

        pd.show();
    }

    @Override
    protected String doInBackground(String... urls) {

        jsonparser = new JSONParser();

        JSONObject jsonobject = jsonparser.getJSONfromURL(URL);
        try {

            jsonarray = jsonobject.getJSONArray("data");

            for (int i = 0; i < jsonarray.length(); i++) {
                jsonobject = jsonarray.getJSONObject(i);

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

                map.put("journal", jsonobject.getString(KEY_journal));
                map.put("image", jsonobject.getString(KEY_image));
                map.put("title", jsonobject.getString(KEY_title));
                map.put("description",
                        jsonobject.getString(KEY_description));
                map.put("JournalID", jsonobject.getString(KEY_JournalID));
                map.put("pubDate", jsonobject.getString(KEY_pubDate));
                map.put("statID", jsonobject.getString(KEY_statID));

                Content cont = new Content(jsonobject.getString("journal"),
                        jsonobject.getString("image"),
                        jsonobject.getString("title"),
                        jsonobject.getString("pubDate"),
                        jsonobject.getString("description"),
                        jsonobject.getString("JournalID"),
                        jsonobject.getString("statID"));
                contents.add(cont);

                itemList.add(map);
                dateTime = itemList.get(itemList.size() - 1).get(
                        KEY_pubDate);
            }

        } catch (JSONException e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }

        return itemList.toString();

    }

    @Override
    protected void onPostExecute(String result) {
        try {
            if (pd != null) {
                pd.dismiss();

            }
        } catch (Exception e) {

        }

        try {
            adapter = new BRIgeAdapter(MainActivity.this, itemList,
                    screenSize);
            list.setAdapter(adapter);

        } catch (NullPointerException e) {
            e.printStackTrace();
        }

    }

}

}
BaseAdapter java代码

public class Result extends Activity {

public Drawable mDrawable;
ImageLoader loader;;
public MainActivity main;

Bundle parems;

public TextView tittle, desc, statID, journal, DateTime;

public String My_tittle, My_desc, My_link, My_statID, StringmBitmap,
        My_journal, My_dateTime, position;
public ImageView image;
public ScrollView scrollview;

AlertDialogManager alert = new AlertDialogManager();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.activity_result);

    statID = (TextView) findViewById(R.id.statID);
    journal = (TextView) findViewById(R.id.DateTimeDetails);
    DateTime = (TextView) findViewById(R.id.Tabula);
    scrollview = (ScrollView) findViewById(R.id.scrollviewMenu);

    loader = new ImageLoader(this);
    tittle = (TextView) findViewById(R.id.titleDetails);
    desc = (TextView) findViewById(R.id.descriptionDetails);

    image = (ImageView) findViewById(R.id.imageDetails);

    Intent intent = getIntent();

    My_tittle = intent.getStringExtra("KEY_title");
    My_desc = intent.getStringExtra("KEY_description");
    My_link = intent.getStringExtra("KEY_link");
    My_statID = intent.getStringExtra("KEY_statID");
    My_journal = intent.getStringExtra("KEY_journal");
    My_dateTime = intent.getStringExtra("KEY_pubDate");
    position = intent.getStringExtra("position");

    StringmBitmap = intent.getStringExtra("Bitmap");



    loader.DisplayImage(StringmBitmap, image);

    Log.d("url", StringmBitmap);
    tittle.setText(My_tittle);
    DateTime.setText(My_dateTime);

    My_desc = My_desc.trim();
    My_desc = My_desc.replaceAll("\n", "\n\n");

    Log.i("JSOOOOOOOOOOOOOOONNNNNNN", My_desc);
    desc.setText(My_desc);

    statID.setText(My_statID);
    journal.setText(My_journal);

}

}
public class BRIgeAdapter extends BaseAdapter {

Context mContext;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;

private int screenSize;

public BRIgeAdapter(Context context, ArrayList<HashMap<String, String>> d,
        int screenSize) {
    this.mContext = context;
    this.data = d;
    this.screenSize = screenSize;
    inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(context.getApplicationContext());
}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (convertView == null)
        vi = inflater.inflate(R.layout.list_row, null);

    TextView journal = (TextView) vi.findViewById(R.id.smalljournal);
    TextView title = (TextView) vi.findViewById(R.id.smalltitle);
    TextView description = (TextView) vi
            .findViewById(R.id.smallDescription);
    ImageView thumb_image = (ImageView) vi.findViewById(R.id.smallthumb);
    TextView statId = (TextView) vi.findViewById(R.id.smallstatID);
    TextView DateTime = (TextView) vi.findViewById(R.id.smallDateTime);
    HashMap<String, String> itemList = new HashMap<String, String>();
    itemList = data.get(position);

    journal.setText(itemList.get(MainActivity.KEY_journal));
    statId.setText(itemList.get(MainActivity.KEY_statID));


    String titleString = itemList.get(MainActivity.KEY_title);

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

    String DateTimeTxt = itemList.get(MainActivity.KEY_pubDate).replace(
            "T", " ");

    try {
        Date _d = df.parse(DateTimeTxt);
        SimpleDateFormat new_df = new SimpleDateFormat("dd.MM.yyyy");
        String _s = new_df.format(_d);
        DateTime.setText(_s);
    } catch (ParseException e) {

        e.printStackTrace();
    }

    if (screenSize == Configuration.SCREENLAYOUT_SIZE_NORMAL)
        description.setVisibility(View.INVISIBLE);

    else
        description.setVisibility(View.VISIBLE);
    title.setText(titleString);

    description.setText(itemList.get(MainActivity.KEY_description));


    String url = itemList.get(MainActivity.KEY_image);

    imageLoader.DisplayImage(url, thumb_image);

    return vi;
}

}
public class BriGeWidgetProvider extends AppWidgetProvider {
public static final String TOAST_ACTION = "com.example.android.stackwidget.TOAST_ACTION";
public static final String EXTRA_ITEM = "com.example.android.stackwidget.EXTRA_ITEM";
private RemoteViews views;
private Intent intent;

@Override
public void onDeleted(Context context, int[] appWidgetIds) {
    super.onDeleted(context, appWidgetIds);
}

@Override
public void onDisabled(Context context) {
    super.onDisabled(context);
}

@Override
public void onEnabled(Context context) {
    super.onEnabled(context);
}

@Override
public void onReceive(Context context, Intent intent) {
    AppWidgetManager mgr = AppWidgetManager.getInstance(context);
    if (intent.getAction().equals(TOAST_ACTION)) {
        int appWidgetId = intent.getIntExtra(
                AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);

        int viewIndex = intent.getIntExtra(EXTRA_ITEM, 0);
        Toast.makeText(context, "Touched view " + viewIndex,
                Toast.LENGTH_SHORT).show();

        context.startActivity(new Intent(context, MainActivity.class)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

    }
    super.onReceive(context, intent);
}

@SuppressWarnings("deprecation")
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {

    final int N = appWidgetIds.length;
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];

        intent = new Intent(context, BriGeRemoteViewsService.class);

        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

        views = new RemoteViews(context.getPackageName(),
                R.layout.widget_layout);
        views.setRemoteAdapter(appWidgetId, R.id.stackWidgetView, intent);

        views.setEmptyView(R.id.stackWidgetView, R.id.stackWidgetEmptyView);

        Intent templateIntent = new Intent(context,
                BriGeWidgetProvider.class);
        templateIntent.setAction(BriGeWidgetProvider.TOAST_ACTION);
        templateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                appWidgetId);
        intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
        PendingIntent templatePendingIntent = PendingIntent.getBroadcast(
                context, 0, templateIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
        views.setPendingIntentTemplate(R.id.stackWidgetView,
                templatePendingIntent);

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
    super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
public class BriGeRemoteViewsService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {

    return new BriGeRemoteViewsFactory(this.getApplicationContext(), intent);
}

class BriGeRemoteViewsFactory implements RemoteViewsFactory {

    private ArrayList<ItemI> itemList;
    private Context context;
    private int appWidgetId;

    public BriGeRemoteViewsFactory(Context context, Intent intent) {
        this.context = context;
        this.appWidgetId = intent.getIntExtra(
                AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
    }

    @Override
    public void onCreate() {
        itemList = getData();
    }

    @Override
    public void onDataSetChanged() {
        itemList = getData();
    }

    @Override
    public void onDestroy() {
        itemList.clear();
    }

    @Override
    public int getCount() {
        if (itemList != null)
            return itemList.size();
        else
            return 0;
    }

    @Override
    public RemoteViews getViewAt(int position) {
        ItemI item = itemList.get(position);

        RemoteViews rv = new RemoteViews(context.getPackageName(),
                R.layout.item_view);

        rv.setTextViewText(R.id.title, item.getTitle());
        rv.setImageViewBitmap(R.id.img, getImageBitmap(item.getImage()));


        Bundle extras = new Bundle();
        extras.putInt(BriGeWidgetProvider.EXTRA_ITEM, position);
        Intent fillIntent = new Intent();
        fillIntent.putExtras(extras);

        rv.setOnClickFillInIntent(R.id.title, fillIntent);
        rv.setOnClickFillInIntent(R.id.img, fillIntent);

        return rv;
    }

    private Bitmap getImageBitmap(String url) {
        Bitmap bm = null;
        try {
            URL aURL = new URL(url);
            URLConnection conn = aURL.openConnection();
            conn.connect();
            InputStream is = conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
            bm = BitmapFactory.decodeStream(bis);
            bis.close();
            is.close();
        } catch (IOException e) {
        }
        return bm;
    }

    @Override
    public RemoteViews getLoadingView() {
        return null;
    }

    @Override
    public int getViewTypeCount() {
        return 1;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    private ArrayList<ItemI> getData() {
        JsonParser jp = new JsonParser(context);
        return jp.getDataAsList();
    }
}
}
公共类BRIgeAdapter扩展BaseAdapter{
语境;
私有数组列表数据;
专用静态充气机=空;
公共图像加载器;
屏幕大小;
公共BrigeDapter(上下文,数组列表d,
整数(屏幕大小){
this.mContext=上下文;
这个数据=d;
this.screenSize=屏幕大小;
充气机=(充气机)mContext
.getSystemService(上下文布局\充气机\服务);
imageLoader=新的imageLoader(context.getApplicationContext());
}
public int getCount(){
返回data.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
if(convertView==null)
vi=充气机充气(R.layout.list_行,空);
TextView日志=(TextView)vi.findViewById(R.id.smalljournal);
TextView title=(TextView)vi.findViewById(R.id.smalltitle);
TextView说明=(TextView)vi
.findviewbyd(R.id.smallDescription);
ImageView thumb_image=(ImageView)vi.findViewById(R.id.smallthumb);
TextView statId=(TextView)vi.findviewbyd(R.id.smallstatID);
TextView DateTime=(TextView)vi.findViewById(R.id.smallDateTime);
HashMap itemList=新的HashMap();
itemList=data.get(位置);
journal.setText(itemList.get(MainActivity.KEY_journal));
setText(itemList.get(MainActivity.KEY_statId));
String titleString=itemList.get(MainActivity.KEY\u title);
SimpleDataFormat df=新SimpleDataFormat(“yyyy-MM-dd”);
字符串DateTimeTxt=itemList.get(MainActivity.KEY\u pubDate)。替换(
"T,",;
试一试{
Date _d=df.parse(DateTimeTxt);
SimpleDataFormat new_df=新SimpleDataFormat(“dd.MM.yyyy”);
字符串_s=新的文件格式(_d);
DateTime.setText(_s);
}捕获(解析异常){
e、 printStackTrace();
}
如果(屏幕大小==配置。屏幕布局\u大小\u正常)
description.setVisibility(视图.不可见);
其他的
description.setVisibility(View.VISIBLE);
title.setText(标题字符串);
description.setText(itemList.get(MainActivity.KEY_description));
字符串url=itemList.get(MainActivity.KEY\u image);
显示图像(url,拇指图像);
返回vi;
}
}
AppWidgetProvider java代码

public class Result extends Activity {

public Drawable mDrawable;
ImageLoader loader;;
public MainActivity main;

Bundle parems;

public TextView tittle, desc, statID, journal, DateTime;

public String My_tittle, My_desc, My_link, My_statID, StringmBitmap,
        My_journal, My_dateTime, position;
public ImageView image;
public ScrollView scrollview;

AlertDialogManager alert = new AlertDialogManager();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.activity_result);

    statID = (TextView) findViewById(R.id.statID);
    journal = (TextView) findViewById(R.id.DateTimeDetails);
    DateTime = (TextView) findViewById(R.id.Tabula);
    scrollview = (ScrollView) findViewById(R.id.scrollviewMenu);

    loader = new ImageLoader(this);
    tittle = (TextView) findViewById(R.id.titleDetails);
    desc = (TextView) findViewById(R.id.descriptionDetails);

    image = (ImageView) findViewById(R.id.imageDetails);

    Intent intent = getIntent();

    My_tittle = intent.getStringExtra("KEY_title");
    My_desc = intent.getStringExtra("KEY_description");
    My_link = intent.getStringExtra("KEY_link");
    My_statID = intent.getStringExtra("KEY_statID");
    My_journal = intent.getStringExtra("KEY_journal");
    My_dateTime = intent.getStringExtra("KEY_pubDate");
    position = intent.getStringExtra("position");

    StringmBitmap = intent.getStringExtra("Bitmap");



    loader.DisplayImage(StringmBitmap, image);

    Log.d("url", StringmBitmap);
    tittle.setText(My_tittle);
    DateTime.setText(My_dateTime);

    My_desc = My_desc.trim();
    My_desc = My_desc.replaceAll("\n", "\n\n");

    Log.i("JSOOOOOOOOOOOOOOONNNNNNN", My_desc);
    desc.setText(My_desc);

    statID.setText(My_statID);
    journal.setText(My_journal);

}

}
public class BRIgeAdapter extends BaseAdapter {

Context mContext;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;

private int screenSize;

public BRIgeAdapter(Context context, ArrayList<HashMap<String, String>> d,
        int screenSize) {
    this.mContext = context;
    this.data = d;
    this.screenSize = screenSize;
    inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(context.getApplicationContext());
}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (convertView == null)
        vi = inflater.inflate(R.layout.list_row, null);

    TextView journal = (TextView) vi.findViewById(R.id.smalljournal);
    TextView title = (TextView) vi.findViewById(R.id.smalltitle);
    TextView description = (TextView) vi
            .findViewById(R.id.smallDescription);
    ImageView thumb_image = (ImageView) vi.findViewById(R.id.smallthumb);
    TextView statId = (TextView) vi.findViewById(R.id.smallstatID);
    TextView DateTime = (TextView) vi.findViewById(R.id.smallDateTime);
    HashMap<String, String> itemList = new HashMap<String, String>();
    itemList = data.get(position);

    journal.setText(itemList.get(MainActivity.KEY_journal));
    statId.setText(itemList.get(MainActivity.KEY_statID));


    String titleString = itemList.get(MainActivity.KEY_title);

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

    String DateTimeTxt = itemList.get(MainActivity.KEY_pubDate).replace(
            "T", " ");

    try {
        Date _d = df.parse(DateTimeTxt);
        SimpleDateFormat new_df = new SimpleDateFormat("dd.MM.yyyy");
        String _s = new_df.format(_d);
        DateTime.setText(_s);
    } catch (ParseException e) {

        e.printStackTrace();
    }

    if (screenSize == Configuration.SCREENLAYOUT_SIZE_NORMAL)
        description.setVisibility(View.INVISIBLE);

    else
        description.setVisibility(View.VISIBLE);
    title.setText(titleString);

    description.setText(itemList.get(MainActivity.KEY_description));


    String url = itemList.get(MainActivity.KEY_image);

    imageLoader.DisplayImage(url, thumb_image);

    return vi;
}

}
public class BriGeWidgetProvider extends AppWidgetProvider {
public static final String TOAST_ACTION = "com.example.android.stackwidget.TOAST_ACTION";
public static final String EXTRA_ITEM = "com.example.android.stackwidget.EXTRA_ITEM";
private RemoteViews views;
private Intent intent;

@Override
public void onDeleted(Context context, int[] appWidgetIds) {
    super.onDeleted(context, appWidgetIds);
}

@Override
public void onDisabled(Context context) {
    super.onDisabled(context);
}

@Override
public void onEnabled(Context context) {
    super.onEnabled(context);
}

@Override
public void onReceive(Context context, Intent intent) {
    AppWidgetManager mgr = AppWidgetManager.getInstance(context);
    if (intent.getAction().equals(TOAST_ACTION)) {
        int appWidgetId = intent.getIntExtra(
                AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);

        int viewIndex = intent.getIntExtra(EXTRA_ITEM, 0);
        Toast.makeText(context, "Touched view " + viewIndex,
                Toast.LENGTH_SHORT).show();

        context.startActivity(new Intent(context, MainActivity.class)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

    }
    super.onReceive(context, intent);
}

@SuppressWarnings("deprecation")
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {

    final int N = appWidgetIds.length;
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];

        intent = new Intent(context, BriGeRemoteViewsService.class);

        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

        views = new RemoteViews(context.getPackageName(),
                R.layout.widget_layout);
        views.setRemoteAdapter(appWidgetId, R.id.stackWidgetView, intent);

        views.setEmptyView(R.id.stackWidgetView, R.id.stackWidgetEmptyView);

        Intent templateIntent = new Intent(context,
                BriGeWidgetProvider.class);
        templateIntent.setAction(BriGeWidgetProvider.TOAST_ACTION);
        templateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                appWidgetId);
        intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
        PendingIntent templatePendingIntent = PendingIntent.getBroadcast(
                context, 0, templateIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
        views.setPendingIntentTemplate(R.id.stackWidgetView,
                templatePendingIntent);

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
    super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
public class BriGeRemoteViewsService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {

    return new BriGeRemoteViewsFactory(this.getApplicationContext(), intent);
}

class BriGeRemoteViewsFactory implements RemoteViewsFactory {

    private ArrayList<ItemI> itemList;
    private Context context;
    private int appWidgetId;

    public BriGeRemoteViewsFactory(Context context, Intent intent) {
        this.context = context;
        this.appWidgetId = intent.getIntExtra(
                AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
    }

    @Override
    public void onCreate() {
        itemList = getData();
    }

    @Override
    public void onDataSetChanged() {
        itemList = getData();
    }

    @Override
    public void onDestroy() {
        itemList.clear();
    }

    @Override
    public int getCount() {
        if (itemList != null)
            return itemList.size();
        else
            return 0;
    }

    @Override
    public RemoteViews getViewAt(int position) {
        ItemI item = itemList.get(position);

        RemoteViews rv = new RemoteViews(context.getPackageName(),
                R.layout.item_view);

        rv.setTextViewText(R.id.title, item.getTitle());
        rv.setImageViewBitmap(R.id.img, getImageBitmap(item.getImage()));


        Bundle extras = new Bundle();
        extras.putInt(BriGeWidgetProvider.EXTRA_ITEM, position);
        Intent fillIntent = new Intent();
        fillIntent.putExtras(extras);

        rv.setOnClickFillInIntent(R.id.title, fillIntent);
        rv.setOnClickFillInIntent(R.id.img, fillIntent);

        return rv;
    }

    private Bitmap getImageBitmap(String url) {
        Bitmap bm = null;
        try {
            URL aURL = new URL(url);
            URLConnection conn = aURL.openConnection();
            conn.connect();
            InputStream is = conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
            bm = BitmapFactory.decodeStream(bis);
            bis.close();
            is.close();
        } catch (IOException e) {
        }
        return bm;
    }

    @Override
    public RemoteViews getLoadingView() {
        return null;
    }

    @Override
    public int getViewTypeCount() {
        return 1;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    private ArrayList<ItemI> getData() {
        JsonParser jp = new JsonParser(context);
        return jp.getDataAsList();
    }
}
}
公共类BriGeWidgetProvider扩展AppWidgetProvider{
公共静态最终字符串TOAST\u ACTION=“com.example.android.stackwidget.TOAST\u ACTION”;
公共静态最终字符串EXTRA_ITEM=“com.example.android.stackwidget.EXTRA_ITEM”;
私人远程视图;
私人意图;
@凌驾
已删除公共void(上下文,int[]AppWidgetId){
super.ondeletted(上下文,appWidgetIds);
}
@凌驾
已禁用公共无效(上下文){
super.onDisabled(上下文);
}
@凌驾
公共void已启用(上下文){
super.onEnabled(上下文);
}
@凌驾
公共void onReceive(上下文、意图){
AppWidgetManager mgr=AppWidgetManager.getInstance(上下文);
if(intent.getAction().equals(TOAST_ACTION)){
int-appWidgetId=intent.getIntExtra(
AppWidgetManager.EXTRA\u APPWIDGET\u ID,
AppWidgetManager。无效的\u APPWIDGET\u ID);
int viewIndex=intent.getIntExtra(额外项,0);
Toast.makeText(上下文,“触摸视图”+视图索引,
吐司。长度(短)。show();
context.startActivity(新意图(context,MainActivity.class)
.addFlags(意图、标志、活动、新任务);
}
super.onReceive(上下文、意图);
}
@抑制警告(“弃用”)
@凌驾
public void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,
int[]appWidgetIds){
final int N=appWidgetIds.length;
对于(int i=0;i
RemoteViewsService java代码

public class Result extends Activity {

public Drawable mDrawable;
ImageLoader loader;;
public MainActivity main;

Bundle parems;

public TextView tittle, desc, statID, journal, DateTime;

public String My_tittle, My_desc, My_link, My_statID, StringmBitmap,
        My_journal, My_dateTime, position;
public ImageView image;
public ScrollView scrollview;

AlertDialogManager alert = new AlertDialogManager();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.activity_result);

    statID = (TextView) findViewById(R.id.statID);
    journal = (TextView) findViewById(R.id.DateTimeDetails);
    DateTime = (TextView) findViewById(R.id.Tabula);
    scrollview = (ScrollView) findViewById(R.id.scrollviewMenu);

    loader = new ImageLoader(this);
    tittle = (TextView) findViewById(R.id.titleDetails);
    desc = (TextView) findViewById(R.id.descriptionDetails);

    image = (ImageView) findViewById(R.id.imageDetails);

    Intent intent = getIntent();

    My_tittle = intent.getStringExtra("KEY_title");
    My_desc = intent.getStringExtra("KEY_description");
    My_link = intent.getStringExtra("KEY_link");
    My_statID = intent.getStringExtra("KEY_statID");
    My_journal = intent.getStringExtra("KEY_journal");
    My_dateTime = intent.getStringExtra("KEY_pubDate");
    position = intent.getStringExtra("position");

    StringmBitmap = intent.getStringExtra("Bitmap");



    loader.DisplayImage(StringmBitmap, image);

    Log.d("url", StringmBitmap);
    tittle.setText(My_tittle);
    DateTime.setText(My_dateTime);

    My_desc = My_desc.trim();
    My_desc = My_desc.replaceAll("\n", "\n\n");

    Log.i("JSOOOOOOOOOOOOOOONNNNNNN", My_desc);
    desc.setText(My_desc);

    statID.setText(My_statID);
    journal.setText(My_journal);

}

}
public class BRIgeAdapter extends BaseAdapter {

Context mContext;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;

private int screenSize;

public BRIgeAdapter(Context context, ArrayList<HashMap<String, String>> d,
        int screenSize) {
    this.mContext = context;
    this.data = d;
    this.screenSize = screenSize;
    inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(context.getApplicationContext());
}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi = convertView;
    if (convertView == null)
        vi = inflater.inflate(R.layout.list_row, null);

    TextView journal = (TextView) vi.findViewById(R.id.smalljournal);
    TextView title = (TextView) vi.findViewById(R.id.smalltitle);
    TextView description = (TextView) vi
            .findViewById(R.id.smallDescription);
    ImageView thumb_image = (ImageView) vi.findViewById(R.id.smallthumb);
    TextView statId = (TextView) vi.findViewById(R.id.smallstatID);
    TextView DateTime = (TextView) vi.findViewById(R.id.smallDateTime);
    HashMap<String, String> itemList = new HashMap<String, String>();
    itemList = data.get(position);

    journal.setText(itemList.get(MainActivity.KEY_journal));
    statId.setText(itemList.get(MainActivity.KEY_statID));


    String titleString = itemList.get(MainActivity.KEY_title);

    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

    String DateTimeTxt = itemList.get(MainActivity.KEY_pubDate).replace(
            "T", " ");

    try {
        Date _d = df.parse(DateTimeTxt);
        SimpleDateFormat new_df = new SimpleDateFormat("dd.MM.yyyy");
        String _s = new_df.format(_d);
        DateTime.setText(_s);
    } catch (ParseException e) {

        e.printStackTrace();
    }

    if (screenSize == Configuration.SCREENLAYOUT_SIZE_NORMAL)
        description.setVisibility(View.INVISIBLE);

    else
        description.setVisibility(View.VISIBLE);
    title.setText(titleString);

    description.setText(itemList.get(MainActivity.KEY_description));


    String url = itemList.get(MainActivity.KEY_image);

    imageLoader.DisplayImage(url, thumb_image);

    return vi;
}

}
public class BriGeWidgetProvider extends AppWidgetProvider {
public static final String TOAST_ACTION = "com.example.android.stackwidget.TOAST_ACTION";
public static final String EXTRA_ITEM = "com.example.android.stackwidget.EXTRA_ITEM";
private RemoteViews views;
private Intent intent;

@Override
public void onDeleted(Context context, int[] appWidgetIds) {
    super.onDeleted(context, appWidgetIds);
}

@Override
public void onDisabled(Context context) {
    super.onDisabled(context);
}

@Override
public void onEnabled(Context context) {
    super.onEnabled(context);
}

@Override
public void onReceive(Context context, Intent intent) {
    AppWidgetManager mgr = AppWidgetManager.getInstance(context);
    if (intent.getAction().equals(TOAST_ACTION)) {
        int appWidgetId = intent.getIntExtra(
                AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);

        int viewIndex = intent.getIntExtra(EXTRA_ITEM, 0);
        Toast.makeText(context, "Touched view " + viewIndex,
                Toast.LENGTH_SHORT).show();

        context.startActivity(new Intent(context, MainActivity.class)
                .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

    }
    super.onReceive(context, intent);
}

@SuppressWarnings("deprecation")
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {

    final int N = appWidgetIds.length;
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];

        intent = new Intent(context, BriGeRemoteViewsService.class);

        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

        views = new RemoteViews(context.getPackageName(),
                R.layout.widget_layout);
        views.setRemoteAdapter(appWidgetId, R.id.stackWidgetView, intent);

        views.setEmptyView(R.id.stackWidgetView, R.id.stackWidgetEmptyView);

        Intent templateIntent = new Intent(context,
                BriGeWidgetProvider.class);
        templateIntent.setAction(BriGeWidgetProvider.TOAST_ACTION);
        templateIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
                appWidgetId);
        intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
        PendingIntent templatePendingIntent = PendingIntent.getBroadcast(
                context, 0, templateIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);
        views.setPendingIntentTemplate(R.id.stackWidgetView,
                templatePendingIntent);

        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
    super.onUpdate(context, appWidgetManager, appWidgetIds);
}
}
public class BriGeRemoteViewsService extends RemoteViewsService {
@Override
public RemoteViewsFactory onGetViewFactory(Intent intent) {

    return new BriGeRemoteViewsFactory(this.getApplicationContext(), intent);
}

class BriGeRemoteViewsFactory implements RemoteViewsFactory {

    private ArrayList<ItemI> itemList;
    private Context context;
    private int appWidgetId;

    public BriGeRemoteViewsFactory(Context context, Intent intent) {
        this.context = context;
        this.appWidgetId = intent.getIntExtra(
                AppWidgetManager.EXTRA_APPWIDGET_ID,
                AppWidgetManager.INVALID_APPWIDGET_ID);
    }

    @Override
    public void onCreate() {
        itemList = getData();
    }

    @Override
    public void onDataSetChanged() {
        itemList = getData();
    }

    @Override
    public void onDestroy() {
        itemList.clear();
    }

    @Override
    public int getCount() {
        if (itemList != null)
            return itemList.size();
        else
            return 0;
    }

    @Override
    public RemoteViews getViewAt(int position) {
        ItemI item = itemList.get(position);

        RemoteViews rv = new RemoteViews(context.getPackageName(),
                R.layout.item_view);

        rv.setTextViewText(R.id.title, item.getTitle());
        rv.setImageViewBitmap(R.id.img, getImageBitmap(item.getImage()));


        Bundle extras = new Bundle();
        extras.putInt(BriGeWidgetProvider.EXTRA_ITEM, position);
        Intent fillIntent = new Intent();
        fillIntent.putExtras(extras);

        rv.setOnClickFillInIntent(R.id.title, fillIntent);
        rv.setOnClickFillInIntent(R.id.img, fillIntent);

        return rv;
    }

    private Bitmap getImageBitmap(String url) {
        Bitmap bm = null;
        try {
            URL aURL = new URL(url);
            URLConnection conn = aURL.openConnection();
            conn.connect();
            InputStream is = conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
            bm = BitmapFactory.decodeStream(bis);
            bis.close();
            is.close();
        } catch (IOException e) {
        }
        return bm;
    }

    @Override
    public RemoteViews getLoadingView() {
        return null;
    }

    @Override
    public int getViewTypeCount() {
        return 1;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    private ArrayList<ItemI> getData() {
        JsonParser jp = new JsonParser(context);
        return jp.getDataAsList();
    }
}
}
公共类BriGeRemoteViewsService扩展了RemoteViewsService{
@凌驾
公共远程视图工厂onGetViewFactory(意图){
返回新的BriGeRemote