1

ViewPager 内に 7 つのパネルがあります。それぞれに異なる機能が含まれています。私のニュース パネルでは、ビュー内に機能を持たせたいと考えています。現在使用しているViewPagerクラスは次のとおりです。

class MyPageAdapter extends PagerAdapter {

  public int getCount() {
    //Return 7 as there will be 7 panes in the dashboard
    return 7;
  }

  public Object instantiateItem(View collection, int position) {

    LayoutInflater inflater = (LayoutInflater) collection.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View v = null;
    switch (position) {
    case 0:
        v = inflater.inflate(R.layout.dashboard_social, null);
        break;
    case 1:
        v = inflater.inflate(R.layout.dashboard_unilife, null);
        break;
    case 2:
        v = inflater.inflate(R.layout.dashboard_allcourses, null);
        break;
    case 3:
        v = inflater.inflate(R.layout.dashboard_news, null);
        //USE HTTP HERE FOR TWITTER FEED


        break;
    case 4:
        v = inflater.inflate(R.layout.dashboard_mycourse, null);
        break;
    case 5:
        v = inflater.inflate(R.layout.dashboard_media, null);
        break;
    case 6:
        v = inflater.inflate(R.layout.dashboard_extras, null);
        break;
    }

    ((ViewPager) collection).addView(v, 0);

    return v;
  }

  @Override
  public void destroyItem(View arg0, int arg1, Object arg2) {
    ((ViewPager) arg0).removeView((View) arg2);

  }

  @Override
  public boolean isViewFromObject(View arg0, Object arg1) {
    return arg0 == ((View) arg1);

  }

   @Override
   public Parcelable saveState() {
    return null;
   }
 }

ボタンを使用するなどの単純な機能の場合、次のようなものになることを知っています。

case 3:

        v = inflater.inflate(R.layout.dashboard_news, null);
    //Functionality     
        Button btn = (Button) v.findViewById(R.id.bTutorialComplete);
        final Context context = collection.getContext();
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                context.startActivity(new Intent(context,
                        DashboardContainerActivity.class));
            }
        });

私の問題は、Twitter から最新のツイートを取得して表示する別のアクティビティがあることです。最新のツイートを表示するコードは次のとおりです。

public class DashboardNews extends Activity{

TextView tvFeed;
HttpClient client;
//Incomplete URL of Twitter timeline
final static String URL = "http://api.twitter.com/1/statuses/user_timeline.json?screen_name=";
//Used in AsyncTask to carry out lastTweet method
JSONObject json;



@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.twitter_feed);
    tvFeed = (TextView) findViewById(R.id.tvTwitterFeedText);
    new Read().execute("text");
}

public JSONObject lastTweet(String username) throws ClientProtocolException, IOException, JSONException{
    //Used to create a string that can be appended
    StringBuilder url = new StringBuilder(URL);
    //append the username to the url
    url.append(username);

    //new HttpGet
    HttpGet get = new HttpGet(url.toString());

    //new response
    HttpResponse r = client.execute(get);

    //get status code
    int status = r.getStatusLine().getStatusCode();
    //check if status code is success (200)
    if(status == 200){
        //Get the entity from response
        HttpEntity e = r.getEntity();

        //Convert entity data to string
        String data = EntityUtils.toString(e);

        //Get JSON formatted sequence of values
        JSONArray timeline = new JSONArray(data);

        //Place the sequence in a JSONObject
        JSONObject lasttweet = timeline.getJSONObject(0);

        //return the last tweet
        return lasttweet;
    } else {
        //Display a Toast that there was an error
        Toast.makeText(getBaseContext(), "Error connecting to Twitter.", Toast.LENGTH_SHORT).show();
        //Return null
        return null;
    }
}

public class Read extends AsyncTask<String, Integer, String>{

    @Override
    protected String doInBackground(String... params) {
        // TODO Auto-generated method stub
        try {
            //Call lastTweet method and username
            json = lastTweet("kibria3");
            //return the last tweet
            return json.getString(params[0]);


        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);
        //Set the text of view to the result
        tvFeed.setText(result);
    }



}

}

私の質問は、View Pager の switch ステートメントのケース 3 内でこのアクティビティを機能させるにはどうすればよいですか? (ボタン機能を HTTP 接続に置き換えます)

4

0 に答える 0