Autore Topic: list view in widget  (Letto 731 volte)

Offline gabric

  • Utente senior
  • ****
  • Post: 615
  • Respect: +18
    • Google+
    • Mostra profilo
    • Brancato's site
  • Dispositivo Android:
    Nexus 5 / Tablet mediacom s4
  • Play Store ID:
    Brancato's+app
  • Sistema operativo:
    window7. ubuntu
list view in widget
« il: 06 Febbraio 2013, 18:41:43 CET »
0
Salve, forse per voi sarà semplice, ma io ho letto non so quanti link, e anche la documentazione, ma non riesco a persuadermi.

il mio obbiettivo è quello di creare un widget con titolo, 2 tasti e una listview

nella schermata di configurazione scelgo un nome da uno spinner, e questo passa questo al widget, e lo salva nelle sharedpreferences, quindi il widget dovrebbe mostrare a schermo la lista..

solo non riesco a capire quale contex devo metter nel metodo del widget per la listview (this non va bene)

ecco il codice
Codice (Java): [Seleziona]
package com.widget;

import java.util.ArrayList;
import java.util.Random;


import android.annotation.SuppressLint;
import android.app.Dialog;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RemoteViews;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class Widgets1 extends AppWidgetProvider {

        ListView rssListView = null;
    ArrayList<RSSItem> RSSItems = new ArrayList<RSSItem>();
   
    String feedUrl;
    Context bah;
   
   
        @SuppressWarnings("deprecation")
                @SuppressLint("NewApi")
                @Override
        public void onUpdate(Context context, AppWidgetManager appWidgetManager,
                        int[] appWidgetIds) {
               
                 //creo il vettore statico con tutti gli indirizzi
           
            String[] indirizzi = new String[21];
             //qui popolo tutti link
// .
// .
// .

           
               
                 SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
             String facolta = settings.getString("facolta", "Università");
             int num =Integer.parseInt(settings.getString("posizione","0"));
                // TODO Auto-generated method stub
             System.out.println("ecco cosa prendo dalla shared: "+facolta+ " " +num);
                super.onUpdate(context, appWidgetManager, appWidgetIds);
               
                final int N = appWidgetIds.length;
                // Loop per ogni widget che appartiene a questo provider
                for (int i = 0; i < N; i++) {
                        int awID = appWidgetIds[i];
                        Intent svcIntent=new Intent(context, widget_config.class);
                       
                        RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget);
                   
                       feedUrl = indirizzi[num];
                       
                       
                          refreshRSSList();
                           
                          rv.setRemoteAdapter(appWidgetIds[i], R.id.personListView,svcIntent);
                            //rssListView = (ListView) findViewById(R.id.personListView);
                                ArrayAdapter<RSSItem> array_adapter;
                            array_adapter = new ArrayAdapter<RSSItem>(context, R.layout.list_item, RSSItems);
                            rssListView.setAdapter(array_adapter);
                           
                           
                            //utilizzo dell'adapter
                            //((ListView) findViewById(R.id.rssListView)).setAdapter(array_adapter);
                         
                           rssListView.setOnItemClickListener((OnItemClickListener) this);
                           
                            //rssListView.setOnItemClickListener((OnItemClickListener) RSSItems);
                            refreshRSSList();

                           
                            //:::::::::::::::::::::::::::::::.
                           
                           
                           
                           
                        //_______________________
                       
                        appWidgetManager.updateAppWidget(awID, rv);
                }
        }
       


        @Override
        public void onDeleted(Context context, int[] appWidgetIds) {
                // TODO Auto-generated method stub
                super.onDeleted(context, appWidgetIds);
                // Toast quando viene eliminato
                Toast.makeText(context, "Perchè mi abbandoni?!", Toast.LENGTH_SHORT)
                                .show();
        }



//metodi rss_______________________________________________________

private void refreshRSSList() {
     
      ArrayList<RSSItem> newItems = RSSItem.getRSSItems(feedUrl);
      RSSItems.clear();
      RSSItems.addAll(newItems);
     
     
     
  }

//provo a gestire il click sulla lista

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
   
 RSSItem b;
 b = RSSItems.get(position);
 String str = b.getDescription();
               
           /*   Toast tt  = Toast.makeText(getBaseContext(),"descrizione: " +a,
                                        Toast.LENGTH_LONG);
                                        tt.show(); */

                                       
        WebView wv = new WebView(bah);
       
        wv.loadData(str, "text/html", "utf-8");
        Dialog dialog = new Dialog(bah) {

        public boolean onKeyDown(int keyCode, KeyEvent event){
        if (keyCode != KeyEvent.KEYCODE_DPAD_LEFT)
        this.dismiss();
        return true;
                                        }
                                        };     
                                       
                                       
        dialog.addContentView(wv, new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        dialog.setTitle(b.getTitle());
        dialog.show();                         
                                       
            }


}    

non ho proprio idea... le ho provate tutte