package com.lgq.rssreader.task; import com.google.gson.Gson; import com.lgq.rssreader.R; import com.lgq.rssreader.adapter.ChannelAdapter; import com.lgq.rssreader.adapter.WidgetChannelAdapter; import com.lgq.rssreader.adapter.WidgetChannelAdapter.ViewHolder; import com.lgq.rssreader.core.ReaderApp; import com.lgq.rssreader.entity.Channel; import com.lgq.rssreader.utils.Helper; import android.app.Activity; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.HeaderViewListAdapter; import android.widget.ListView; import android.widget.RemoteViews; import android.widget.Toast; public class RssWidgetConfig extends Activity{ int mAppWidgetId; private Channel c; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_widget_config); Log.i("RssReader"," on WidgetConf ... "); setResult(RESULT_CANCELED); // Find the widget id from the intent. Intent intent = getIntent(); Bundle extras = intent.getExtras(); if (extras != null) { mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); } // If they gave us an intent without the widget id, just bail. if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) { finish(); } Button btnOk = (Button)findViewById(R.id.widget_ok); btnOk.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // return OK Intent resultValue = new Intent(); resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId); SharedPreferences.Editor prefs = ReaderApp.getAppContext().getSharedPreferences("Widget_Channel", 0).edit(); prefs.putString("Widget_Channel" + mAppWidgetId, new Gson().toJson(c)); prefs.commit(); setResult(RESULT_OK, resultValue); finish(); } }); final ListView listView = (ListView)findViewById(R.id.widget_channels); if(listView.getAdapter() == null){ WidgetChannelAdapter adapter = new WidgetChannelAdapter( this, Helper.getChannels(), listView); listView.setAdapter(adapter); }else{ HeaderViewListAdapter wrap = (HeaderViewListAdapter)listView.getAdapter(); ((ChannelAdapter)wrap.getWrappedAdapter()).ResetData(Helper.getChannels()); } listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ViewHolder holder = (ViewHolder) view.getTag(); holder.channel_select.toggle(); if(WidgetChannelAdapter.getIsSelected().containsValue(true)){ Integer[] data = new Integer[WidgetChannelAdapter.getIsSelected().size()]; int lastPosition = 0; for(int i =0; i< data.length;i++){ if(WidgetChannelAdapter.getIsSelected().get(i)){ lastPosition = i; break; } } View wantedView = listView.getChildAt(lastPosition); ViewHolder previousHolder = (ViewHolder)wantedView.getTag(); previousHolder.channel_select.setChecked(false); WidgetChannelAdapter.getIsSelected().put(lastPosition, false); } if(holder.channel_select.isChecked()){ WidgetChannelAdapter.getIsSelected().put(position, holder.channel_select.isChecked()); c = (Channel)parent.getItemAtPosition(position); Toast.makeText(view.getContext(), ReaderApp.getAppContext().getResources().getString(R.string.widget_youhadchosed) + c.Title, Toast.LENGTH_SHORT).show(); } } }); } }