package com.douban.android; import java.io.IOException; import java.util.ArrayList; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.View.OnClickListener; import android.widget.AbsListView; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import com.douban.android.util.PreferencesUtil; import com.google.gdata.client.douban.DoubanService; import com.google.gdata.data.PlainTextConstruct; import com.google.gdata.data.TextContent; import com.google.gdata.data.douban.MiniblogEntry; import com.google.gdata.data.douban.MiniblogFeed; import com.google.gdata.util.ServiceException; /** * @author haiyang 显示我说的界面 */ public class ActivityShowSaying extends AbstractActivity { ListView listView; OnClickListener listener = null; EditText editText = null; Button button = null; SayingListAdapter sayingListAdapter = null; private class Saying { public String id; public String nickname; public String content; public String time; } /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 显示列表 setContentView(R.layout.show_saying); listView = (ListView) findViewById(R.id.saying_list); sayingListAdapter = new SayingListAdapter(this, getSayingArraryFromInternet()); listView.setAdapter(sayingListAdapter); editText = (EditText) findViewById(R.id.content); listener = new OnClickListener() { public void onClick(View v) { setTitle("sending"); DoubanService myService = getAuthDoubanService(); try { sayingListAdapter.addSaying(myService .createSaying(new PlainTextConstruct((editText .getText()).toString()))); } catch (IOException e) { setTitle("sending error"); e.printStackTrace(); } catch (ServiceException e) { setTitle("sending error"); e.printStackTrace(); } } }; button = (Button) findViewById(R.id.send); button.setOnClickListener(listener); } /* * 得到我说的内容 */ private ArrayList<Saying> getSayingArraryFromInternet() { ArrayList<Saying> sayingList = new ArrayList<Saying>(); SharedPreferences settings = getSharedPreferences( PreferencesUtil.preferencesDouban, 0); String userId = settings.getString(PreferencesUtil.userName, "haiyangjy"); MiniblogFeed mf; try { DoubanService myService = getAuthDoubanService(); mf = myService.getContactsMiniblogs(userId, 1, 20); for (MiniblogEntry me : mf.getEntries()) { Saying saying = new Saying(); String nickname = me.getAuthors().get(0).getName(); String content = ((TextContent) me.getContent()).getContent() .getPlainText(); saying.content = content; saying.nickname = nickname; sayingList.add(saying); } } catch (IOException e) { e.printStackTrace(); } catch (ServiceException e) { e.printStackTrace(); } return sayingList; } public class SayingListAdapter extends BaseAdapter { private Context mContext; private ArrayList<Saying> sayingList; public SayingListAdapter(Context context, ArrayList<Saying> sayingList) { mContext = context; SayingListAdapter.this.sayingList = sayingList; } @Override public int getCount() { return sayingList.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { SayingView sayingView; Saying saying = sayingList.get(position); if (convertView == null) { sayingView = new SayingView(mContext, saying); } else { sayingView = (SayingView) convertView; sayingView.setNickname(saying.nickname); sayingView.setContent(saying.content); } return sayingView; } /** * 实时显示增加的我说 * * @param miniblogEntry */ public void addSaying(MiniblogEntry miniblogEntry) { Saying newSaying = new Saying(); newSaying.content = ((TextContent) miniblogEntry.getContent()) .getContent().getPlainText(); newSaying.nickname = miniblogEntry.getAuthors().get(0).getName(); sayingList.add(0, newSaying); notifyDataSetChanged(); } } /** * 我说列表的每一个条目 * * @author Administrator * */ public class SayingView extends LinearLayout { private TextView tNickname; private TextView tContent; private ImageView imageView; private Saying saying; private Context mContext; public SayingView(Context context, Saying saying) { super(context); mContext = context; SayingView.this.saying = saying; imageView = getImageViewFromLocal(); addView(imageView); tNickname = new TextView(context); tNickname.setText(saying.nickname+": "); addView(tNickname, new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, 48)); tContent = new TextView(context); tContent.setText(saying.content); addView(tContent, new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT, 48)); } /** * 重新设置昵称 * * @param nickname */ public void setNickname(String nickname) { tNickname.setText(nickname+": "); } /** * 重新设置我说的内容 * * @param content */ public void setContent(String content) { tContent.setText(content); } /* * 得到本地的默认图片 */ private ImageView getImageViewFromLocal() { ImageView imageView = new ImageView(mContext); imageView.setImageResource(R.drawable.default_head); imageView.setAdjustViewBounds(true); imageView.setLayoutParams(new AbsListView.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); return imageView; } } }