title: runOnUiThread(new Runnable(){}) is undefined for the type new Thread(){}
body: <p>Looking at the part:</p>
  
  <pre><code>runOnUiThread(new Runnable() {
  </code></pre>
  
  <p>I have the problem:</p>
  
  <pre><code>The method runOnUiThread(new Runnable(){}) is undefined for the type new Thread(){}
  </code></pre>
  
  <p>So I understand that runOnUiThread must come from an activity. But Im not sure how this will be implemented? Its a dialog from within a Preference / settings view</p>
  
  <p>This where the ChannelsDialogPreference comes form: <strong>pref_channels.xml</strong></p>
  
  <pre><code>&lt;PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" &gt;
  
      &lt;com.example.tvrplayer.ChannelsDialogPreference
          android:title="@string/pref_channels_dialog_title"
          android:dialogMessage="@string/pref_channels_dialog_message"              
          android:negativeButtonText="test"/&gt; 
  
  &lt;/PreferenceScreen&gt;
  </code></pre>
  
  <p><strong>ChannelsDialogPreference:</strong></p>
  
  <pre><code>package com.example.tvrplayer;
  
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
  
  import org.json.JSONArray;
  import org.json.JSONException;
  import org.json.JSONObject;
  
  import android.app.Activity;
  import android.content.Context;
  import android.content.DialogInterface;
  import android.preference.DialogPreference;
  import android.util.AttributeSet;
  import android.util.Log;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.ListView;
  
  public class ChannelsDialogPreference extends DialogPreference {
  
      public static Context ctx;
  //    Activity activity;
  
      public ChannelsDialogPreference(Context context, AttributeSet attrs) {
          super(context, attrs);
  
          this.ctx = context;
      }
  
  
      @Override
      protected View onCreateDialogView() {
  
  //      Set loading spinner
  
  //      Start looking for channels
  
  //      When complete, show channels
  
  
  
  
  
          LayoutInflater inflater = ((SettingsActivity) ctx).getLayoutInflater();
          final View vw = inflater.inflate(R.layout.channel_content_view, null);
  //        Do this in a new Thread
  
  
          Thread thread = new Thread()
          {
              @Override
              public void run() {
                  try {
                      final JSONArray channels;
                      String username = null;
                      String linkid = null;
                      final String apiurl = "http://192.168.2.136:8080";
                      final String channelID = null;
                      final DatabaseHandler db = new DatabaseHandler(ctx);
                      List&lt;User&gt; users = db.getAllUsers();  
                      for (User cn : users) {
                           linkid = cn.getLinkID();
                           username = cn.getUserName();
                       }
                       db.close();
  
                      final ArrayList&lt; HashMap &lt; String, String &gt; &gt; channelList = new ArrayList &lt; HashMap &lt; String, String &gt; &gt; ();
                      try {
  
                          if ( channelID != null ) {
                              channels = Json.getJson(apiurl + "/rest/channel/"+ linkid +"/"+ username + "/" + channelID, "GET");
                              Log.i("CHANNELS", channels.toString());
                              for (int i=0; i &lt; channels.length(); i++) { 
                                  JSONObject json_data = channels.getJSONObject(i);
                                  String name = json_data.getString("Name");
                                  String channelid = json_data.getString("ChannelID");
                                  HashMap&lt;String, String&gt; channelObject = new HashMap&lt;String, String&gt;();
  //                                  if ( json_data.getString("ParentPath") == "" ) {
                                  channelObject.put("id", channelid);
                                  channelObject.put("name", name);
                                  channelList.add(channelObject);
  //                                  }
                              }
                          } else {
                              channels = Json.getJson(apiurl + "/rest/channel/"+ linkid +"/"+ username, "GET");
                              Log.i("CHANNELS", channels.toString());
                              for (int i=0; i &lt; channels.length(); i++) { 
                                  JSONObject json_data = channels.getJSONObject(i);
                                  String name = json_data.getString("Name");
                                  String channelid = json_data.getString("ChannelID");
                                  HashMap&lt;String, String&gt; channelObject = new HashMap&lt;String, String&gt;();
                                  Log.i("CHANNEL LEN", ""+ json_data.getString("ParentID").length());
                                  if ( json_data.getString("ParentID").length() &lt; 32 ) {
                                      channelObject.put("id", channelid);
                                      channelObject.put("name", name);
                                      channelList.add(channelObject);
                                  }
                              }
                          }
                          runOnUiThread(new Runnable() {
                               public void run() {
                                   HiddenChannelsListAdapter adapter = new HiddenChannelsListAdapter(ctx, channelList);
                                      ListView lv = (ListView) vw.findViewById(R.id.list);
                                      lv.setAdapter(adapter);
                                      lv.isClickable();
                                      lv.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener() 
                                      {
                                          @Override
                                          public void onItemClick(AdapterView&lt;?&gt; arg0, View arg1, int arg2, long arg3)
                                          {
                                              Log.i("CLICKED ON LV ITEM", "YEA");
                                          }
                                      });
                              }
                          });
  
  
                      } catch (JSONException e) {
                          // TODO Auto-generated catch block
                          e.printStackTrace();
                      }                               
                  } catch (Exception e) {
                      e.printStackTrace();
                  }
              }
          };
  
          thread.start(); 
  
  
  
  //        new ChannelHandler().execute(apiurl, username, linkid, vw, ctx, channelID);
          return vw;
      }
  
      @Override
      protected void onDialogClosed(boolean positiveResult) {
          super.onDialogClosed(positiveResult);
          persistBoolean(positiveResult);
      }
  
      @Override
      public void onClick (DialogInterface dialog, int which)
      {
          super.onClick(dialog, which);
  //
          Log.v("which", Integer.toString(which));
  //
          if(which == -1) { //Clear all
  //          new ChannelHandler().execute(apiurl, username, linkid, vw, ctx, channelID);
          }
      }
  
  
  }
  </code></pre>